如何为同源的 iframe 提供单独的 sessionStorage

2023-12-25

标准 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(使用前将#替换为@)

如何为同源的 iframe 提供单独的 sessionStorage 的相关文章

随机推荐