很早之前久知道sessionStorage ,也学习过,但没有实战使用过 。最近团队遇到一个问题《electronjs中打开新页面sessionStorage丢失》,让我有机会重新来认识一遍它。
同源策略 和 它的api 这个我就不强调了 。通过实测,我得到下面几个结论 。
+各个标签页的sessionStorage 是独立的 。
+在a标签页写入修改删除sessionStorage ,不会影响到已经打开的标签页中的sessionStorage 。
+通过a标签,window.open,window.location,windows.history ,右键复制 等方式在新标签页,本页,iframe ,新窗口中打开新页面,当前标签页的 sessionStorage 会传递到新页面。
+通过按住 ctrl键打开新标签页,或者右键菜单打开新标签页,新窗口 ,当前标签页的 sessionStorage 是不会传递到新页面的 。
+关闭某个标签页,该标签页的sessionStorage 会被销毁。不影响其他标签页或者窗口 。
+在某个标签页即使跳出了当前站点,返回来的时候,sessionStorage 也还在的 。
鉴于它有以上特点 :
1,可以用来做多账户登录 , sessionid 不用cookie存储,用 sessionStorage 来存储。spa应用比较适合 。
以上测试都是建立在chrome最新版上