最佳答案
我在使用Ajax的AntiForgeryToken时遇到了问题。我使用的是ASP.NET MVC 3。我在jQuery Ajax调用和HTML.AntiForgeryToken()中尝试了该解决方案。使用该解决方案,现在正在传递令牌:
var data = { ... } // with token, key is '__RequestVerificationToken'
$.ajax({
type: "POST",
data: data,
datatype: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
url: myURL,
success: function (response) {
...
},
error: function (response) {
...
}
});
当我删除[ValidateAntiForgeryToken]
属性,只是为了查看数据(带有令牌)是否作为参数传递给控制器时,我可以看到它们正在被传递。但由于某种原因,当我将属性放回时,仍然会弹出“A required anti-forgery token was not supplied or was invalid.
”消息。
有什么想法吗?
编辑
AntiForgeryToken是在表单中生成的,但我没有使用提交操作来提交它。相反,我只是使用jQuery获取令牌的值,然后尝试使用Ajax发布它。
下面是包含令牌的表单,它位于顶部母版页中:
<form id="__AjaxAntiForgeryForm" action="#" method="post">
@Html.AntiForgeryToken()
</form>