说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet。
源错误:
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 |
此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet。
asp.net mvc为了预防网站信息泄露默认是阻止客户端Get请求的,这属于json劫持漏洞,asp.net mvc后台返回数据时,json请求行为默认是JsonRequestBehavior.DenyGet,即阻止Get请求返回。为了安全建议开发者使用ajax提交时使用post方式。
解决办有两种:
1.将get请求改成post请求
2.继续使用get请求,在asp.net后台返回json数据时,添加JsonRequestBehavior.AllowGet参数,
return Json(msgStr, JsonRequestBehavior.AllowGet);
代码如下:Html 代码:
<td> @Html.ActionLink("修改", "Edit", new { id = item.Id}) |
@Html.ActionLink("删除", "deleteUser", new { id = item.Id },
new { onclick = "return confirm('确认删除?')" })
</td>
控制器代码
return Json(new { result = 1, message = "删除成功" }, JsonRequestBehavior.AllowGet);
一定要加上, JsonRequestBehavior.AllowGet参数