我知道如何使用MVC的AntiForgeryToken属性以及它的关联HTML帮助程序来帮助XSRF保护我的应用程序的表单POST.
可以为实现GET的JsonResults做类似的事情吗?
例如,我的View包含一个onSubmit jQuery调用,如下所示:
$.getJSON("/allowActivity/YesOrNo/" + someFormValue,"{}",function(data) {
if(data.Allow) {
//Do something.
}
});
编辑:
我找到了一个类似的问题this post,没有具体的答案.
最佳答案
您可以将AntiForgeryToken与一些自定义逻辑结合使用.在服务器上创建AntiForgery令牌是相同的,但默认情况下,该值不包含在您的XmlHttpRequest中.
此令牌的值位于仅HTTP的cookie“__RequestVerificationToken”中,并且还应该以发布到服务器的表单数据的形式出现.因此,在XmlHttpRequest中包含一个键/值对,并在控制器上使用ValidateAntiForgeryToken – 属性
编辑:
今天我尝试自己使用AntiForgeryToken进行Ajax请求,它运行正常.只需使用以下javascript:
$.post('my_url',$.getAntiForgeryTokenString(),function() { ... });
$.getAntiForgeryTokenString = function() {
return $(document.getElementsByName("__RequestVerificationToken")).fieldSerialize();
};
在服务器端,您不必更改代码 – 只需使用ValidateAntiForgeryToken-属性即可.
希望这可以帮助