sessionStorage 和 localStorage 的范围

IT技术 javascript html local-storage sessionstorage
2021-01-28 14:24:54

我阅读了一些关于 sessionStorage 和 localStorage 的文档,但我不明白范围是什么:域,特定页面?

例如,如果我有以下页面:

http://example.com/products.aspx?productID=1

http://example.com/products.aspx?productID=2

http://example.com/services.aspx?serviceID=3

如果在我运行的上述每个页面上(idvalue 是查询字符串中的值):

localStorage.setItem('ID',idvalue);

我最终会存储 3 个不同的值,还是这些值会相互覆盖?

2个回答

会话存储:

  1. 值仅在它们存储的窗口或选项卡中持续存在。

  2. 值仅在创建它们的窗口或选项卡中可见。

本地存储:

  1. 值保持窗口和浏览器的生命周期。

  2. 值在运行在同一来源的每个窗口或选项卡之间共享。

因此,通过阅读和理解这一点,每个键值对对于每个域都是唯一的,因为本地存储跨窗口或选项卡保留值。

结论可能是正确的,但不是推理。即使存储是每页的,它仍然可以跨窗口/选项卡持续存在。
2021-03-17 14:24:54
上面的链接现已失效,这是另一个很棒的资源:sitepoint.com/an-overview-of-the-web-storage-api
2021-03-28 14:24:54
谢谢。你能分享这个参考的链接吗?
2021-04-12 14:24:54

这些值将相互覆盖。无论路径如何,每个密钥名称对对于协议和域都是唯一的。

可以通过document.domain属性更改受影响的域

  • sub.example.com->example.com是可能的(子域)
  • sub.example.com->other.example.com不可能
这是所document.domain提到API的文档html.spec.whatwg.org/multipage/...
2021-03-24 14:24:54
2021-04-02 14:24:54
好吧,即使在阅读了 MDN 页面后,我仍然无法找到我的问题的答案......无论如何,再次感谢!
2021-04-04 14:24:54
谢谢!你有推荐的参考资料,详细解释 localStorage 吗?
2021-04-05 14:24:54
@Christophe 我已经通过webappsstore.sqlite使用 query查看在我的 Firefox 配置文件目录中调用的 sqlite(3) 数据库验证了我的陈述SELECT scope FROM webappsstore2;结果是域的逆序,后面是非逆序的协议,加上端口就够了,例如:gro.allizom.snodda.secivres.:https:443如您所见,没有提及任何路径。
2021-04-08 14:24:54