标准 W3C 标准对 localStorages 的描述如下:
不同的作者共享一个主机名,例如用户在geocities.com
,所有共享一个本地存储对象。没有通过路径名限制访问的功能。因此,敦促共享主机上的作者避免使用这些功能,因为其他作者读取数据并覆盖它是微不足道的。
但对于 sessionStorages 来说,它确实为选项卡和窗口提供了单独的 sessionStorages,即使它们来自同一来源。
但 iframe 似乎确实共享 sessionStorage。
有没有办法通过同源的 iframe 拥有单独的 sessionStorages 。
编辑:
由于选项卡/窗口是否有单独的 sessionStorages 会造成混乱,因此这里是一个示例页面。将代码保存在文件中并使用两个不同的选项卡打开它。然后刷新一个选项卡 5 次,刷新另一个选项卡 1 次。你会发现数字不同。
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
sessionStorage.setItem("counter", (parseInt(sessionStorage.getItem("counter"), 10) || 0 ) + 1);
document.getElementById("result").innerHTML = sessionStorage.getItem("counter");
</script>
</body>
</html>
Edit2:到目前为止我尝试过的是使用 iframesandbox
属性。但后来我在 iframe 中遇到错误,并且根本无法使用会话存储。我必须添加sandbox="allow-same-origin"
。但是所有 iframe 中的 sessionStorage 又是相同的。
提前致谢。
如果您有 ssl,则有一个解决方法。使用 https://... 访问一个文档并使用 http://... 访问另一个文档将为同一源创建单独的存储。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)