javascript - 如何在客户网站上开设第三方 localStorage 商店?

标签 javascript html local-storage

我正在编写一个在客户端使用 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/

相关文章:

javascript - 如何使用 typeorm 查询生成器创建查询来过滤数据库中的数据?

javascript - JQuery UI 自动完成功能不搜索所有数组

javascript - 单击特定卡时在另一页上呈现卡详细信息

javascript - 从 HTML5 本地存储中检索值

javascript - jquery css 颜色前后变化

javascript - 使用localstorage存储大量对象的最佳实践

javascript - 无法创建垂直菜单

javascript - 将变量从启用 JavaScript 的网页传递到 Perl 脚本

javascript - 无法解析模块说明符 "firebase/app"

javascript - d3js - 如何为可以更新的多组元素绘制多折线图图表?