Ajax:CROS-DOMAIN请求不使用PHP使用Safari IOS设置cookie


Ajax: CROS-DOMAIN request not setting cookies with Safari IOS using PHP

>我正在尝试使用PHP CROS-DOMAIN设置cookie,这意味着我的JS托管在其他域中,JS调用PHP页面试图设置cookie。它适用于所有浏览器,除了移动设备中的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

以下是来自Safari的标题

Safari 现在默认会阻止几乎所有来自未知域的跨域 Cookie。这意味着:

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

如果用户访问 example.com 并且他们从未去过 cookie.com,Safari 将不允许他们存储 Cookie 以供 cookie.com 使用。如果用户访问 example.com 并且以前去过 cookie.com,Safari 将允许 cookie 不问任何问题。

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