8

我在下一个域上有两个应用程序:www.bar.comwww.foo.bar.com。第二个应用程序通过第一个应用程序进行授权(使用跨域请求)在此之后我将 cookie 设置为浏览器,并且在 Internet Explorer 中它不起作用:

$.cookie("SESSION_KEY", loginResult.sessionKey, {
        expires: 365,
        path: "/",
        domain: ".bar.com"
});

该代码适用于除 Internet Explorer v.9 之外的所有浏览器 未设置 cookie。我该如何解决?

4

2 回答 2

3

这是由于 IE 设置造成的。从Tools菜单中选择Internet Options。导航到Security选项卡。选择 Internet Web 内容区域并单击Custom Level以打开安全设置。

找到Miscellaneous设置。尝试启用Access data sources across domains. 您可能需要重新启动 IE 才能使设置生效。

于 2013-04-02T13:26:42.137 回答
2

IE,作为市场上唯一的一种网络浏览器,实现了部分 P3P 标准(这是关于 CORS 中的接受 cookie)

因此,您可以使用服务器响应设置 cookie - 为此,您必须在服务器响应中设置此标头(设置 cookie)(我从我的 PHP symfony 项目中复制粘贴以下行):

$response->headers->set('P3P', 'CP="random_text"');

您还必须记住在您的 CORS 请求中添加标志“withCredentials=true”(在其他情况下,任何 cookie 都将从请求/响应中发送/保存)。

于 2016-09-06T08:20:49.927 回答