window.localStorage
- 遵循
Document
同源策略 - 可以长期保存
即页面的document.origin
相同的情况下,才能共享storage
存储。那是否可以通过降域的操作,来实现跨子域共享localStorage
通信呢?
答案是不行的,可以参考另一篇文章,share data between cross subdomain page safety
session cookie
不设置过期时间的cookie称为session cookie,此类cookie会在浏览器关闭时自动清除。需要注意的是,session可能会引发歧义,并不是在关闭当前tab时,即清除,而是仅当关闭浏览器以后,才会清除。
window.sessionStorage
1、sessionStorage遵循以下规则
- sessionStorage内容不共享,即使同源,甚至
location.href
一致,仍然不共享,这点很关键 - sessionStorage内容基于页面唯一性,在浏览器打开期间一直保持,重新加载页面(
location.reload
)或关闭当前tab后重新恢复(shift+cmd+t
),仍然存在。需要注意:- 这并不是sessionStorage内容在关闭以后,即会清除,相反,在浏览器关闭之前,并不会清除
- 之所以会达到类似清除的效果,是因为在实际生产环境中,很难达到类似
chrome shift+cmd+t
恢复页面的效果,往往是页面关闭+重新打开,此时相当于一个新的页面,之前的session并不会继承
- 打开多个相同URL的页面,会创建各自的
sessionStorage
- 关闭浏览器tab,仅会清除对应的
sessionStorage
2、可以用如下代码进行测试
// TODO:存储方案对比图
–