是否可以使用 HTML5 本地存储在不同站点的页面之间共享数据?
Posted
技术标签:
【中文标题】是否可以使用 HTML5 本地存储在不同站点的页面之间共享数据?【英文标题】:Is it possible to use HTML5 local storage to share data between pages from different sites? 【发布时间】:2013-04-15 05:23:48 【问题描述】:我想在用户端创建数据并让来自另一个 URL 的 javascript 也访问它。我知道相同的来源政策,但我想知道是否可以创建一些例外。或者,我可以使用任何技巧/功能吗?
【问题讨论】:
其他 URL 是否嵌入到 iframe 中? 不,它没有嵌入。 我知道的唯一方法是,如果您在浏览器扩展或帧间使用 localstorage。不过我不确定 IndexedDB,我玩得还不够。 我不认为你可以设置任何例外(也许像document.domain
这样的东西来规避 SOP) - 你只能加载其他站点并使用跨域消息传递数据跨度>
这能回答你的问题吗? cross domain localstorage with javascript
【参考方案1】:
我知道的最佳技巧是使用 iframe 和 postMessage
API 确实可以从外部域访问 localStorage。
这个技巧很简单:
在您的页面上,您必须为要从中获取数据的域创建 iframe您的数据域需要监听message
事件:
document.addEventListener("message", handler, useCapture);
处理程序将负责访问localStorage
并将其内容发布到源域
postMessage
API 在数据域上调用handler
函数
https://developer.mozilla.org/en-US/docs/DOM/window.postMessage
为了您的数据安全,您可以使用 HTTP 标头 X-Frame-Options ALLOW-FROM uri https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options?redirectlocale=en-US&redirectslug=The_X-FRAME-OPTIONS_response_header
希望它会有所帮助。
【讨论】:
以上是关于是否可以使用 HTML5 本地存储在不同站点的页面之间共享数据?的主要内容,如果未能解决你的问题,请参考以下文章
HTML5 本地存储 - 我可以为每个键存储多个值,如果不能,我可以使用啥替代方案?