【问题标题】:GET Request Blocked even though AllowGet is set in the controller即使在控制器中设置了 AllowGet,GET 请求也会被阻止
【发布时间】:2019-05-07 09:39:36
【问题描述】:

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

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

但在返回语句中,我确实将 JsonRequestBehavior 设置为 AllowGet

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

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

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

我检查了我的代码,发现一些控制器只返回一个 JS 数组,所以我修复了它们以返回一个对象,该数组分配给该对象的属性。然而,并不是我所有的控制器都这样做,就像我的代码 sn-p 中的那个——它返回一个 JS 对象——但响应仍然偶尔被阻止。

如何阻止此错误的发生?

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

【问题讨论】:

  • 您是否尝试重建您的项目?
  • @HienNguyen 项目编译正常。
  • 你可以发布你的控制器和脚本来调用问题
  • @Lennart - 问题是一样的,是的,但是错误消息特别告诉我指定我已经完成的 AllowGet,它仍然间歇性地抛出错误。如果它每次都阻止它,那问题就不大了,但它只是偶尔发生。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 2021-07-26
    • 2018-06-13
    • 2015-05-05
    • 2017-07-01
    • 1970-01-01
    • 2019-04-29
    • 2021-03-29
    相关资源
    最近更新 更多