ダッシュボード機能を備えたWebアプリがあります。このアプリは、さまざまな環境、すべてのブラウザでさまざまな企業によって使用されています。
JSONを返すURLへのhttpPOSTを介して60秒ごとにダッシュボードを更新するJavaScriptがあります。
1人のユーザー(および私のログによると1人のユーザーのみ)の場合、次の.NETエラーメッセージがそのURLから60秒ごとに生成されます。
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.NETMVCアプリは、セキュリティ上の理由から、(正しく)要求を受け入れることを拒否しています。
もちろん、プロキシの設定を変更できる可能性は低いです。
アクションに以下を追加してみました。
[OutputCache(Duration = 0, Location = OutputCacheLocation.None, NoStore=true)]
と同様:
Response.Cache.SetNoTransforms();
しかし、問題は残っています。
プロキシにマングリングを停止するように指示するために設定できる他のHTTPヘッダーはありますか?これらのプロキシを動作させる他の方法はありますか?または、これを実行している可能性のあるブラウザに何かありますか?
更新:これを書いた後、同じ会社の別の2人の異なるユーザーがこれらのエラーを生成し、私のプロキシ理論に重みを加えています。