sessionStorage 和 localStorage 的范围

问题描述 投票:0回答:2

我阅读了一些有关 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 个不同的值,还是这些值会互相覆盖?

javascript html local-storage sessionstorage
2个回答
166
投票

会话存储:

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

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

本地存储:

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

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

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


106
投票

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

可以通过

document.domain
属性更改受影响的域。

  • sub.example.com
    ->
    example.com
    是可能的(子域)
  • sub.example.com
    ->
    other.example.com
    不可能

参考资料:

  • MDN:Web Storage API:“sessionStorage 为每个给定的源维护一个单独的存储区域 [...]”
  • MDN:起源:“只有当方案、主机名和端口都匹配时,两个对象才具有相同的起源。”
© www.soinside.com 2019 - 2024. All rights reserved.