我在下一个域名上有两个应用程序: www.bar.com 和 www.foo.bar.com 。第二个应用程序通过第一个应用程序授权(使用跨域请求) 在此之后,我将cookie设置为浏览器,并且在Internet Explorer中它不起作用:
$.cookie("SESSION_KEY", loginResult.sessionKey, {
expires: 365,
path: "/",
domain: ".bar.com"
});
该代码适用于所有浏览器,不包括Internet Explorer v.9该cookie未设置。我该如何解决?
答案 0 :(得分:2)
IE,因为市场上只有一个网络浏览器,实现了部分P3P标准(这是关于CORS中的接受cookie)
所以你可以使用服务器响应来设置cookie - 要做到这一点,你必须在服务器响应中设置这个头(设置cookie)(我从PHP symfony项目下面复制粘贴):
$response->headers->set('P3P', 'CP="random_text"');
您还必须记住添加标记' withCredentials = true'您的CORS请求(在其他情况下,任何cookie将从请求/响应中发送/保存)。
答案 1 :(得分:1)
这是由IE设置引起的。在Tools
菜单中,选择Internet Options
。导航到Security
标签。选择Internet网络内容区域,然后单击Custom Level
以打开安全设置。
找到Miscellaneous
设置。尝试启用Access data sources across domains
。您可能需要重新启动IE才能使设置生效。