小编tom*_*idt的帖子

在 Safari 13 中从 iframe 读取带有“Samesite=None;Secure”的 cookie

我有一个使用 cookie 身份验证的 iframe。当用户登录时,cookie 在我的域中正常设置。我使用 SameSite=None;Secure。问题是,当第三方网站从我的域中嵌入 iframe 时,我的身份验证 cookie 未通过,因此 iframe 无法对用户进行身份验证。

这在 Chrome 和 Firefox 中工作正常,但在 Safari 中不起作用(它曾经工作到大约一个月前)

我知道SameSite=None的Webkit 错误,据说在 Safari 13 中已修复。我知道 Safari 不再允许 iframe 设置第三方 cookie(多年来一直如此,所以我没有看到它如何与最近的变化相关)。但是,我不是要设置 cookie - 我只是想阅读它。直到最近,这是可能的(请参阅此 SO 问题)。

在 Safari 13 之前,有一种变通方法允许人们通过将首页重定向到 cookie 设置域然后返回原始页面来设置第三方 cookie。在这种情况下,iframe 将能够看到 cookie(因为 iframe 无法写入但可以读取 cookie。

我尝试设置一个没有 SameSite 属性的辅助 cookie,因为这些应该可以工作,但它仍然没有被发送。

无论是否设置了 SameSite,Safari 现在是否会完全丢弃 cookie?如果是这样,他们为什么要费心修复 SameSite 错误?有些东西不加起来。

更新:这似乎与 Apple 的 ITP 2 有关,它对第三方 cookie 设定了严格的标准,甚至根据他们认为可能进行不良跟踪的域来区分域:https : //www.seerinteractive.com/blog/什么是智能跟踪预防/

因此,从我收集的信息来看,这些似乎无法规避这种情况。

更新 2:我想我可能在 Webkit 的存储访问 API 中找到了一个可靠的解决方案:https : …

cookies safari iframe storage-access-api

11
推荐指数
0
解决办法
8180
查看次数

标签 统计

cookies ×1

iframe ×1

safari ×1

storage-access-api ×1