使用CORS时,IE10不发送cookie

时间:2016-04-29 00:21:35

标签: asp.net-mvc-4 cors internet-explorer-10

我在Windows 8 Enterprise上使用IE v10.0.9200.xxx。

执行CORS请求时,IE10中不会发送Cookie!

适用于chrome!我可以在使用chrome时访问cookie。 请求工作正常,我收回数据,但在服务器端我没有cookies。我检查了它,我的IE10页面实例中有cookie。

Access-Control-Allow-Origin和Access-Control-Allow-Credentials标头设置正确! 使用IE10时有什么必须遵守的吗? IE一直是特定的: - )

$.ajax({

    type: 'GET',
    url: 'https://mywebapi.dev/api/Values',
    contentType: 'text/plain',
    dataType: "json",

    xhrFields: {

        withCredentials: true
    },
    headers: {
    },
    success: function (data, msg, xhr) {
        alert(data);
        alert(msg);
    },
    error: function (xhr, error) {
      }
});

在我的网络Api消息处理程序中: ShareAble,Secure = true,HttpOnly = false

r.SetCookie("CookieName", "CookieValue", true, DateTime.Now.AddYears(10), false, "/", true, "");

1 个答案:

答案 0 :(得分:0)

我在我的web api response.headers collection中添加了一个P3P标题:

 r.Headers.Add("P3P", "CP=\"CURa ADMa DEVa CONo HISa OUR IND DSP ALL COR\"");

我没有检查P3P值的含义,因此请注意您设置的值。 正如我已阅读并理解的那样,值可以是任何"CP='XYZ'"

但仍存在一个问题。使用IE10,我只能从/向我的web api发布的CORS客户端获取和设置cookie。当我使用Chrome时,我会在网络API中获取所有Cookie!

Answer

  

.withCredentials属性将包含来自远程的任何cookie   请求中的域,它还将设置任何cookie   远程域名。请注意,这些cookie仍然是同源的   政策,因此您的JavaScript代码无法访问Cookie   document.cookie或响应标头。它们只能被控制   由远程域。

在IE10中添加自定义标头时,请求将被中止。

headers: {
                /// request is aborted in IE10 when using custom header, 
                /// works in Chrome issueing a options preflight request
                "AUTHORIZATION": "dev-client" 
}