即使在控制器中设置了AllowGet,GET请求仍被阻止

时间:2019-05-07 09:39:37

标签: c# .net asp.net-mvc asp.net-web-api

我的几个控制器间歇性地返回以下错误:

  

”此请求已被阻止,因为可能会泄露敏感信息   在GET请求中使用时向第三方网站披露。   要允许GET请求,请将JsonRequestBehavior设置为AllowGet。”

但是在return语句中,我确实将JsonRequestBehavior设置为AllowGet

return Json(new {Success = true, Plan = populatedPlan}, JsonRequestBehavior.AllowGet);

我发现以下文章描述了带GET请求返回JSON时的漏洞。

https://haacked.com/archive/2009/06/25/json-hijacking.aspx/

我检查了我的代码,有些控制器只返回了一个JS数组,所以我修复了那些控制器,以返回一个对象,该数组具有分配给该对象的属性。但是,并非我的所有控制器都在执行此操作,就像我的代码段中的那样(返回一个JS对象),但是仍然偶尔会阻止响应。

如何阻止此错误的发生?

[编辑] 这种情况每200个请求中就有1个发生。当我已经在执行错误消息明确告诉我要执行的操作时,为什么会发生这种情况,我只是感到困惑。

1 个答案:

答案 0 :(得分:-1)

在到达JsonRequestBehavior.AllowGet之前,请确保没有return Json(new {Success = true, Plan = populatedPlan}, JsonRequestBehavior.AllowGet);且没有其他JSON返回。