我在Asp.net MVC 5
项目工作
知道在AntiForgeryToken
电话中有{2}方式将ajax
传递给服务器:
Header
Data
我喜欢将
AntiForgeryToken
放在request header
和我的代码中 适用于客户端和服务器端。我跟着this article。
我将AntiForgeryToken
放在每个$.ajax
来电header
中并且效果很好
但是
现在我决定编写新代码,将AntiForgeryToken
添加到全局Ajax
我的页面中POST
类型的$.ajax
个调用中,并删除每个var antiForgerytoken = $('input[name="__RequestVerificationToken"]').val();
$.ajaxPrefilter(function (options, originalOptions, jqXhr) {
if (options.type.toUpperCase() == "POST") {
jqXhr.setRequestHeader("__RequestVerificationToken", antiForgerytoken);
}
});
代码块。
然后我写了这些代码来实现我的决定,当我在我的页面中有一个表单时,它运作良好(我没有在诸如页面中的多个表单和...):
AntiForgeryToken
我的问题:
这个问题的基础可能是写here的另一个问题,而@DarinDimitrov answered it包含此描述:
ASP.NET MVC
只会重复使用所有表单的相同值,因此不需要知道发送请求的表单是为了验证它
这个规则是绝对的吗?你知道参考吗?我在@DarinDimitrov回答
的评论中看到了一些相反的观点AntiForgeryToken
采取行为,我应该如何更改上述代码以全局设置Ajax标头中的AntiForgeryToken
以使用在MVC
页面中呈现的所有表单?