如果我们已经有[HttpPost],为什么需要使用JsonRequestBehavior?

问题描述:

在ASP.NET MVC中,我们可以选择使用HTTPGET/HTTPPost来保护我们的控制器的行为。 而对于Json请求,还有一个选项JsonRequestBehavior用于安全性。如果我们已经有[HttpPost],为什么需要使用JsonRequestBehavior?

凡JsonRequestBehavior有两个选择:

public enum JsonRequestBehavior 
    { 
     AllowGet = 0, 
     DenyGet = 1, 
    } 

我的问题仅仅是,为什么有JsonRequestBehavior.DenyGet,如果我们可以用HttpPost间隙?

+0

没有必要在POST方法来指定'JsonRequestBehavior'(它总是允许)。但默认情况下,'JsonRequestBehavior'在GET方法中设置为'DenyGet',所以在GET方法中,您必须显式使用'JsonRequestBehavior.AllowGet' –

DenyGet是MVC设置的默认设置,用于保护您免受使用HTTP GET返回数据的特定JSON请求攻击。

您需要手动决定添加AllowGet,这会强制您考虑通过HTTP GET方法公开的数据。

有关详细说明,你可以阅读(有些过时)职位:http://haacked.com/archive/2009/06/25/json-hijacking.aspx/