Apple Safari 仍未设置第三方域 CORS cookie?

Posted

技术标签:

【中文标题】Apple Safari 仍未设置第三方域 CORS cookie?【英文标题】:Apple Safari still not setting 3rd party domain CORS cookies? 【发布时间】:2015-03-30 02:32:57 【问题描述】:

在 Angular 和 jquery 中设置选项、标头、请求和响应的 cookie 几个小时后,Apple Safari 的 CORS cookie 仍然对我们不起作用。

此页面显示相同的问题:

http://arunranga.com/examples/access-control/credentialedRequest.html

用 PC 或 Mac Safari 访问它不会保存 cookie,因此总是回复:

 I do not know you or anyone like you so I am going to mark you with a Cookie :-)
 I do not know you or anyone like you so I am going to mark you with a Cookie :-)
 I do not know you or anyone like you so I am going to mark you with a Cookie :-)

在 2015 年,Safari 7 或 8 是否仍然无法在 3rd 方域上通过 Safari 启用 CORS cookie? (不模拟对该域的访问?)

【问题讨论】:

【参考方案1】:

Apple 已关闭所有漏洞,Safari(桌面版和移动版)将默认阻止所有第 3 方 cookie 和存储数据,并将根据跟踪签名、上次访问时间和主动使用。 没有变通方法。


截至 2016 年:

默认情况下,Safari 会阻止第 3 方 cookie。允许 3rd-party cookie 的唯一方法是通过直接转到该域或使用通过该域的重定向来有效地使它们成为 1st-party。

localstorage 和 cookies API 方法可以工作,但无法跨不同域读取数据。 Localstorage 在 Safari Private 模式下工作。

截至 2018 年:

Safari 的智能跟踪保护 (ITP) 现在也会删除 cookie,即使设置了第一方重定向,它使用自定义白名单和机器学习仅保留用户最近互动过的网站的 cookie。第一方 Cookie 仍可通过第三方 javascript 设置。

截至 2019 年

ITP 版本 2+ 限制由第 3 方 Javascript 设置的第 1 方 cookie。仅保留由第一方域(服务器端或 Javascript)设置的第一方 cookie。

截至 2020 年

ITP 2.3+ 版会阻止任何形式的所有第 3 方访问,并且所有第 1 方 cookie/存储会在与网站的最后一次交互后 7 天后删除。可以通过新的Storage Access API 授予第 3 方有限访问权限。

【讨论】:

所以可以肯定的是,即使使用 CORS withCredentials 也无法在 Safari 中设置 3rd 方 cookie? @VladMiller 是的,不会设置任何内容。 此答案并未涵盖所有可能的状态。如果该域在过去的某个时间点被访问过,来自 另一个 域的 CORS 请求是否能够更新 cookie? @user239558 已经回答了,如果您访问用于 cookie 的域,那么是的,您可以在其他域上读取/写入该 cookie(这就是第 3 方访问的意思)。 我不同意答案中提到的这一点。 “可用”或“访问”可以表示只读、读/写,甚至只写。但是感谢您的澄清!

以上是关于Apple Safari 仍未设置第三方域 CORS cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 plist 值

iPad - Safari 状态栏覆盖部分网页,其中 apple-mobile-web-app-capable 设置为 true

在 Safari 中打开其他网站的 WKWebView 链接

Googlebot 在 Rails 4.1 上导致无效的跨域请求 (COR)

[Firebase/Core][I-COR000020] 发布到 Clearcut 时出错:错误域 = NSURLErrorDomain 代码 = -1009“互联网连接似乎处于脱机状态

Safari 扩展自动更新