ggr*_*nig 9 javascript safari iframe local-storage
我们正在研究托管在同一域的两个不同子域上的两个 Web 应用程序:
https://subDomainA.domain.comhttps://subDomainB.domain.com两个Web 应用程序都显示了托管在第三个子域上的iFrame:
https://subDomainC.domain.com我们postMessage用于在顶部窗口和 IFrame 窗口之间进行通信。
在subDomainA 上显示的 iFrame 中,我们设置了一个 AuthToken:
localStorage.setItem("AuthToken", "JWTAuthToken")
当我们导航到subDomainB并尝试在 iFrame 中运行以下代码时:
localStorage.getItem("AuthToken")
结果是null。
domain.com)这是 Safari 的固有行为还是我们的实现有问题?
Eli*_*lin 12
这是 Safari 中的预期行为。Safari 的智能跟踪预防 (ITP) 根据顶部框架对浏览器存储进行分区。WebKit 的文档是这样解释的:
\n分区是一种允许第三方使用存储和有状态 Web 功能的技术,但将这些功能与第一方网站隔离。让\xe2\x80\x99s 假设 adtech.example.com 是 news.example.com 和 blog.example.com 下的第三方,并且 adtech.example.com 使用 LocalStorage。通过分区 LocalStorage,adtech.example.com 将在 news.example.com 和 blog.example.com 下获得唯一的存储实例,从而消除了通过 LocalStorage 进行跨站点跟踪的可能性。
\n参考:
\nhttps://webkit.org/tracking-prevention/#partitioned-third-party-localstorage
\nSafari 和 Safari 移动设备上的 Iframe localStorage
\nhttps://github.com/zendesk/cross-storage用稍微简单一点的英语说:
\n关于 Safari 7+(OSX、iOS)的注意事项
\nSafari 7+ 默认情况下禁用所有跨域本地存储访问。这是“阻止 cookie 和其他网站数据”隐私设置被设置为“ ”的结果From third parties and advertisers。任何跨存储客户端代码都不会崩溃,但是,它只能访问沙盒中的、隔离的本地存储实例。因此,之前由其他来源设置的任何数据都将不可访问。如果可以的话,人们可以回退到对这些用户代理使用根cookie,或者从服务器端存储请求数据。
这可能有用:\n https://webkit.org/blog/8124/introducing-storage-access-api/
\n总之,潜在的解决方案包括:
\nexample.com(不是www!),然后在one.example.com和之间共享two.example.com。| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |