我在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, "");
答案 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!
.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"
}