会话存储和本地存储的范围

Scope of sessionStorage and localStorage

本文关键字:存储 范围 会话      更新时间:2023-09-26

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

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

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

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

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

如果在上面的每个页面上我都运行(idvalue是querystring中的值):

localStorage.setItem('ID',idvalue);

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

会话存储:

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

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

本地存储:

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

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

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

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

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

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

参考文献:

  • MDN:Web存储API:";sessionStorage为每个给定的原点维护一个单独的存储区域[…]"
  • MDN:来源:";只有当方案、主机名和端口都匹配时,两个对象才具有相同的原点"