【问题标题】:Internet Explorer set cross domain cookies for authorizationInternet Explorer 为授权设置跨域 cookie
【发布时间】:2013-03-23 18:59:03
【问题描述】:

我在下一个域上有两个应用程序: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。我该如何解决?

【问题讨论】:

    标签: internet-explorer cookies cross-domain


    【解决方案1】:

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

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

    【讨论】:

    • 但是,它是一个网络应用程序。我不能告诉所有用户在他们的浏览器中执行此操作。 :)
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 2020-05-17
      • 2013-09-17
      • 1970-01-01
      • 2010-10-22
      • 2014-03-05
      • 2017-10-06
      • 1970-01-01
      相关资源
      最近更新 更多