现在的浏览器都是多标签页的,每个标签页是一个子浏览器,假如你的H5应用需要在同一台电脑切换不同用户,且用户经过登陆授权后,把授权ID以cookie的形式保存,或是服务器session保存(本质上客户端也会有一个cookie保存,如PHPSESSIONID),有以下事项需要注意
-
一个浏览器应用程序的各个运行实例的各个标签页拥有各自的DOM空间、Javascripts空间、sessionStorage,但对于一个同源网站,这些标签页共享cookie、localStorage。
结果:当你打开另外一个标签页时(或同一个浏览器另外一个实例)进入此网址时,可以不经再授权的进入界面,也许你期望这样,也许你不期望这样。
-
各个标签页(相当于一个window)关闭,DOM空间、Javascripts空间、sessionStorage生命期也结束,但localStorage永久保存,有expires date的 cookie结束于过期日期,没expires date的cookie(结束于session)并不会立刻结束,必须直到整个浏览器的每个实例都关闭后才消失。
结果:当你关闭此标签页,而没有关闭整个浏览器,或者此浏览器有多个运行实例,而只关闭一个浏览器,而你以为已经把系统退出了,但此时session结束后的cookie并未消失,其他标签页可以重新输入网址不经再授权地进入界面。
-
刷新(window.reload)将重置DOM空间、Javascripts空间,但sessionStorage还保持。