【问题标题】:Ajax: CROS-DOMAIN request not setting cookies with Safari IOS using PHPAjax:跨域请求未使用 PHP 设置 Safari IOS 的 cookie
【发布时间】:2016-06-19 08:00:13
【问题描述】:

我正在尝试使用 PHP CROS-DOMAIN 设置 cookie,这意味着我的 JS 托管在其他域中,JS 调用试图设置 cookie 的 PHP 页面。 它适用于所有浏览器,除了移动设备中的 Safari(iPhone 6) 奇怪的是我可以访问用户cookie但不能设置(有时它会设置一个空cookie,0字节)

这是我在 php 文件中的代码:

header('Access-Control-Allow-Origin: '.$origin);        
header('Access-Control-Allow-Methods: POST, OPTIONS, GET, PUT');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: X-Requested-With');
header('Access-Control-Max-Age: 1728000');
setcookie("display_session_id", "1234", time() + (60 * 43800), "/", '.mydomain.com', false);

我试图用 * 代替 $origin 但它不起作用。 我也尝试将这些声明放在我的 .htaccess 中,但它不起作用。 服务器:阿帕奇 PHP版本:5.4.45

here are the headers from Safari

【问题讨论】:

    标签: php ajax cookies safari cross-domain


    【解决方案1】:

    Safari 现在默认阻止几乎所有来自 unknown 域的跨域 cookie。这是什么意思:

    Main Site: example.com
    Cookie Site: cookie.com
    

    如果用户访问 example.com 而他们从未访问过 cookie.com,Safari 将不允许他们为 cookie.com 存储 cookie。 如果用户访问 example.com 并且之前访问过 cookie.com,Safari 将允许 cookie 不询问任何问题。

    这是默认策略,但您也应该遇到桌面上的 Safari 和 Internet Explorer 的新策略与 P3P 混淆的问题。

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 2017-03-30
      • 2013-01-05
      • 2017-12-04
      • 2010-10-14
      • 2021-01-16
      • 2010-10-19
      • 1970-01-01
      • 2014-02-08
      相关资源
      最近更新 更多