localStorage、sessionStorage、sessionCookie

2020/10/01 Javascript 共 1025 字,约 3 分钟

window.localStorage

  • 遵循Document同源策略
  • 可以长期保存

即页面的document.origin相同的情况下,才能共享storage存储。那是否可以通过降域的操作,来实现跨子域共享localStorage通信呢?

答案是不行的,可以参考另一篇文章,share data between cross subdomain page safety

不设置过期时间的cookie称为session cookie,此类cookie会在浏览器关闭时自动清除。需要注意的是,session可能会引发歧义,并不是在关闭当前tab时,即清除,而是仅当关闭浏览器以后,才会清除。

window.sessionStorage

1、sessionStorage遵循以下规则

  1. sessionStorage内容不共享,即使同源,甚至location.href一致,仍然不共享,这点很关键
  2. sessionStorage内容基于页面唯一性,在浏览器打开期间一直保持,重新加载页面(location.reload)或关闭当前tab后重新恢复(shift+cmd+t),仍然存在。需要注意:
    • 这并不是sessionStorage内容在关闭以后,即会清除,相反,在浏览器关闭之前,并不会清除
    • 之所以会达到类似清除的效果,是因为在实际生产环境中,很难达到类似chrome shift+cmd+t恢复页面的效果,往往是页面关闭+重新打开,此时相当于一个新的页面,之前的session并不会继承
  3. 打开多个相同URL的页面,会创建各自的sessionStorage
  4. 关闭浏览器tab,仅会清除对应的sessionStorage

2、可以用如下代码进行测试

// TODO:存储方案对比图

[1] localstorage的跨域存储方案

Search

    Table of Contents