IE10 在使用 CORS 时不发送 cookie

IE10 does not send cookies when using CORS

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

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

在 chrome 中效果很好!我可以在使用 chrome 时访问 cookie。 请求工作正常,我取回了数据,但是在服务器端我没有 cookies.And 我检查了一下,我的 IE10 页面实例中有 cookie。

Access-Control-Allow-Origin和Access-Control-Allow-Credentialsheaders设置正确! 使用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, "");

我已将 P3P header 添加到我的网站 api response.headers collection:

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

我没有查看P3P值的含义,所以请注意你设置的是哪个值。 正如我所阅读和理解的那样,该值可以是任何值 "CP='XYZ'"

但是还有一个问题。使用 IE10,我只能获取和设置 cookie from/to 我的网站 api 发布的 CORS 客户端。当我使用 Chrome 时,我会在我的网站 api!

中获取所有 cookie

Answer:

The .withCredentials property will include any cookies from the remote domain in the request, and it will also set any cookies from the remote domain. Note that these cookies still honor same-origin policies, so your JavaScript code can’t access the cookies from document.cookie or the response headers. They can only be controlled by the remote domain.

在 IE10 中添加自定义 header 时,请求被中止。

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