Ajax POST请求中未发送RequestVerificationToken cookie

时间:2016-11-04 17:18:53

标签: asp.net-mvc asp.net-mvc-4 internet-explorer asp.net-mvc-5 antiforgerytoken

这是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

0 个答案:

没有答案