我正在编写一个在客户端使用 localStorage 的第三方原生 JavaScript 组件。
当查看 Chrome DevTools 上的“资源”选项卡时,我看到我的 localStorage 条目存储在客户端域下。例如:假设我的文件来自 cdn.3rd.com 并用作 stackoverflow.com 上的资源 - 那么在这种情况下,我的 localStorage 条目保存在 http://stackoverflow.com 下商店。
但是,查看不同的网站,我看到第三方 localStorage 条目通常保存到第三方域下的商店中。例如,在 bbc.com 中,我看到了 iperceptions.com 的商店,而在 cnn.com 中,我看到了 outbrain.com 的商店。
那么如何在客户端页面上为我自己的域打开一个 localStorage 存储?
最佳答案
由于以下这些限制,您无法访问其他第 3 方站点的 localStorage。
HTML5 不允许对 localStorage 进行跨源访问
基本上,localStorage
是特定于源的资源,因此禁止从其他站点访问 localStorage。在 HTML5 草案的早期阶段,有一个完全允许跨域访问的globalStorage
,但后来出于安全考虑被删除了。所以WebAPI目前非常重视安全。
已知的解决方法 - 仅当您拥有目标站点的管理权限时才有效
有一个很nice article which demonstrates how to cross-origin access localStorage with iframe .但是,此方法需要您修改目标站点的客户端脚本,以通过消息发布将 localStorage 内容通过 iframe 中继到您的站点。因此,如果没有对目标站点的完全管理访问权限,您将无法执行此操作。
关于javascript - 如何在客户网站上开设第三方 localStorage 商店?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31270031/