Ajax:CROS-DOMAIN请求不使用PHP

时间:2016-03-05 14:45:27

标签: php ajax cookies safari cross-domain

我正在尝试使用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中,但它不起作用。 服务器:Apache PHP版本:5.4.45

here are the headers from Safari

1 个答案:

答案 0 :(得分:2)

默认情况下,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混淆。