【问题标题】:Scope of sessionStorage and localStoragesessionStorage 和 localStorage 的范围
【发布时间】:2012-04-02 07:10:22
【问题描述】:

我阅读了一些关于 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


    【解决方案1】:

    会话存储:

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

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

    本地存储:

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

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

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

    【讨论】:

    • 谢谢。你能分享这个参考的链接吗?
    • 以上链接现已失效这是另一个很棒的资源:@​​987654321@
    • 结论可能正确,但推理不正确。即使存储是按页面的,它仍然可以跨窗口/选项卡持续存在。
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢!你有推荐的参考,详细解释 localStorage 吗?
    • @Christophe MDN: StorageW3c: Web Storage
    • 好吧,即使在阅读了 MDN 页面后,我仍然找不到我的问题的答案...无论如何,再次感谢!
    • @Christophe 不久前,我通过使用查询 SELECT scope FROM webappsstore2; 在我的 Firefox 配置文件目录中查看名为 webappsstore.sqlite 的 sqlite(3) 数据库验证了我的陈述。结果是域的逆序,后面是非逆序的协议,端口就足够了,例如:gro.allizom.snodda.secivres.:https:443。如您所见,没有提及任何路径。
    • 这里是提到的document.domain API 的文档:html.spec.whatwg.org/multipage/…
    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多