我有ASP.NET MVC 5应用程序使用。净4.5.1。该应用程序有几个jQuery ajax post方法将POST数据发送到服务器。为了防止跨站请求伪造(XSRF)我已经加入_layout.cshtmlValidateAntiForgeryToken不工作与ajax后asp.net mvc后
@Html.AntiForgeryToken()
并且还JavaScript的,其与所有的Ajax POST发送令牌的HTTPHeader
$(document).ajaxSend(function (event, jqXHR, ajaxOptions) {
if (ajaxOptions.type === 'POST') {
jqXHR.setRequestHeader('__RequestVerificationToken', $('input[name="__RequestVerificationToken"]').val());
}
});
,然后在控制器的以下操作方法我有
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Save(MyModel model)
{
//save and return json data
}
然而ValidateAntiForgeryToken thorwing例外
所需的防伪表单字段“__RequestVerificationToken”是 不存在。
我确认__RequestVerificationToken
正在为每个Ajax POST添加到httpheader。
我有一个使用ASP.NET开发的核心另一个应用程序和我有相同的功能有(除头名是RequestVerificationToken
而不是__RequestVerificationToken
)及其在了ASP.NET的核心工作。
为什么在标题包含在标题中时,ASP.NET MVC中不起作用? ASP.NET Core vs ASP.NET MVC 5中有没有区别ValidateAntiForgeryToken?
可能的复制和Html.AntiForgeryToken( )](http://stackoverflow.com/questions/4074199/jquery-ajax-calls-and-the-html-antiforgerytoken) – VahidN
@VahidN它不是同一个问题。我以前通过提供的链接。 – LP13