如何设置jQuery Ajax调用以在Asp.Net MVC

时间:2016-08-22 11:02:46

标签: jquery ajax asp.net-mvc antiforgerytoken

我在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

我的问题:

  1. 此决定是否有安全性或不当副作用
  2. 当我的页面中有多个表单时,每个不同的局部视图创建并且将通过不同控制器中的不同操作处理时,我应该找到相关的{{ 1}}在每种形式,并将其注入与该表单相关的所有Ajax调用? 就在代码之上就足够了?
  3. 这个问题的基础可能是写here的另一个问题,而@DarinDimitrov answered it包含此描述:

      

    ASP.NET MVC只会重复使用所有表单的相同值,因此不需要知道发送请求的表单是为了验证它

    这个规则是绝对的吗?你知道参考吗?我在@DarinDimitrov回答

    的评论中看到了一些相反的观点
    1. 如果我应该分别对每个表单AntiForgeryToken采取行为,我应该如何更改上述代码以全局设置Ajax标头中的AntiForgeryToken以使用在MVC页面中呈现的所有表单?

0 个答案:

没有答案