允许或拒绝来自客户的GET请求有什么影响?

时间:2016-03-29 19:33:07

标签: c# asp.net json asp.net-mvc

对于ASP.NET Web API 2服务甚至是独立的MVC系统,由于我处理错误的方式等,我更喜欢在我的控制器中使用JsonResult函数:

public class BaseController : Controller
{
    // This controller is where functionality common to all
    // controllers (such as error reporting goes. It's also good for avoiding
    // code repetition as in the case of the next function

    public JsonResult CreateResponse(object Data)
    {
        // send a JsonResult with the specified data
        return Json(Data, JsonRequestBehavior.AllowGet);
    }
}

public class UserController : BaseController
{
    public JsonResult Create(CreateUserViewModel Model)
    {
        try
        {
            var User = new User
            {
                Username = Model.Username,
                EmailAddress = Model.EmailAddress,
                Password = Hashing.CreateHash(Model.Password)
            };

            db.Users.Add(User);
            db.SaveChanges();

            return CreateResponse(true);
        }
        catch (Exception ex)
        {
            return CreateResponse(ex.Message);
        }
    }
}

在JsonRequestBehavior上我想要什么样的AllowGet或DenyGet?

任何一门课程的含义或关注点是什么?

2 个答案:

答案 0 :(得分:1)

您想要DenyGet的原因只有两个(可以轻松地进行研究而找到)。

首先,安全

Why are GET requests returning JSON disallowed by default?

JSON Hijacking

其次,浏览器预取

Logout: GET or POST?

  

2010年,使用GET可能是一个可以接受的答案。但是今天(2013年),浏览器会预先获取他们认为的网页#34;你将访问下一个。

浏览器当然可以缓存ajax调用,并假设您需要相同的请求,可能会意外地注销用户,或者告诉浏览器脚本,当您没有#时,您已经注销了# 39;吨

答案 1 :(得分:0)

对您的问题进行研究,有时可能会导致JSON劫持。详细信息可以在这里找到 http://haacked.com/archive/2009/06/25/json-hijacking.aspx/