停止代理服务器将HTTP POST转换为HTTP GET

时间:2013-03-05 13:08:21

标签: asp.net-mvc-3 http-headers node-http-proxy

我有一个网络应用程序,它具有仪表板功能。该应用程序被许多不同环境中的许多不同公司使用,即所有浏览器。

有一段javascript每60秒通过一个http POST刷新该仪表板到一个返回JSON的url。

对于一个用户(以及仅根据我的日志的一个用户),从该URL每隔60秒生成以下.NET错误消息:

    System.InvalidOperationException: This request has been blocked because sensitive information     could be disclosed to third party web sites when this is used in a GET request. To allow GET    requests, set JsonRequestBehavior to AllowGet.
   at System.Web.Mvc.JsonResult.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

对于所有其他用户,从来没有问题。

我知道这个用户所在的网络是代理的(政府)。该用户是新用户 - 即我们从未在此网络上拥有其他用户。

上面让我相信他们的代理是出于某种原因(尝试带宽优化?)修改请求,将POST转换为GET,默默地。我的Asp.NET MVC应用程序(正确地)拒绝遵守安全原因的请求。

我当然不太可能改变他们的代理设置。

我尝试在动作中添加以下内容:

[OutputCache(Duration = 0, Location = OutputCacheLocation.None, NoStore=true)] 

以及:

Response.Cache.SetNoTransforms();

但问题仍然存在。

我是否可以设置其他任何HTTP标头来指示代理停止修改内容?制作这些代理的任何其他方式都有效吗?或者浏览器中是否有任何可能正在执行此操作的内容?

更新:自写这篇文章以来,来自同一家公司的另外两个不同的用户现在正在产生这些错误,这增加了我的代理理论。

0 个答案:

没有答案