这是Ajax代码:
var token = $('form input[name="__RequestVerificationToken"]').val();
var data = {};
data.Type = $(e.target).attr('type');
data.__RequestVerificationToken = token;
url = '@Url.Action("MyAction", "MyController")';
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: "html",
success: function (result) {
//do some stuff
},
error: function (err) {
//display error
}
})
在IE 11 Developer工具中,在初始加载页面(GET)期间,我可以看到正在设置RequestVerificationToken cookie。此外,还会填充RequestVerificationToken的表单元素。但是,在Ajax POST期间,cookie不是请求的一部分。
Chrome在这两个地方都可以正常运行,在Ajax POST期间,cookie也存在。 IE 11在本地工作(localhost),但是当IE 11访问服务器上的应用程序时会出现此问题,并返回此错误:
所需的防伪cookie" __ RequestVerificationToken_L1JldkNvbm5lY3Q1"不存在。
由于某些原因,当应用程序在服务器上时,IE 11不会在Ajax POST中包含cookie。我可以看到IE Developer Tools的Network选项卡中缺少它。在Chrome开发者工具的“网络”标签中,存在Cookie,并且POSt可以使用。
ASP.NET MVC 5