在Safari中使用CORS的跨域cookie

时间:2010-09-28 15:29:13

标签: javascript safari cors

我按照示例:http://arunranga.com/examples/access-control/credentialedRequest.html

从此页面:http://arunranga.com/examples/access-control/

Firefox中的示例工作,但不是Safari,有人尝试过实施CORS跨域cookie处理,并在Safari中取得成功吗?

感谢。

3 个答案:

答案 0 :(得分:12)

Safari还会阻止未直接访问过的网站的Cookie。您可以在安全设置中看到。它的默认设置是接受cookie:“仅限我访问过的网站”。

这将有助于您入门。 Setting cross-domain cookies in Safari

我让jsonp使用上面链接中的方法在safari中工作。因此假设cookie可以在CORS上下文中工作,但是在这个阶段它似乎不起作用。此外,更改安全设置似乎没有任何效果。

Safari可能会要求返回更严格的标题集吗?

答案 1 :(得分:7)

这听起来像是Safari的bug。我刚刚验证了Safari中没有设置跨域cookie。跨域Cookie在Chrome中正在运行,因此可以在WebKit中修复,而最新的还没有进入Safari。我还没有看到关于此的Safari或WebKit错误报告。

答案 2 :(得分:0)

我在Heroku的不同子域上使用API​​ / UI应用程序遇到此问题,例如my-api.herokuapp.com和my-ui.herokuapp.com,会话cookie已设置为my-api.herokuapp.com。在这种情况下,即使访问my-api.herokuapp.com似乎也没有帮助其默认的“仅限我访问过的网站”政策@ 23inhouse提到:http://content.screencast.com/users/artemv/folders/Jing/media/4dfc08d7-0e9c-483f-a272-bbe91549ea95/00000759.png

然而,当我们为这些应用程序分配了一个自定义域名时,Safari工作正常,它变成了my-api.mydomain.com和my-ui.mydomain.com - 所以看起来Safari对流行的托管商的信任度特别低子域。在这种情况下,不需要直接访问my-api.mydomain.com。