一個sessionStorage的誤區


前言

所有人都知道,localStoragesessionStorage的最大區別是生命周期,一個永久,一個僅針對一個會話期間有效。那么,到底什么是一個會話?多個標簽頁之間的數據是否會共享呢?

后台的session

我們對會話session的認識一般都是從后台的session開始的,比如Java的session,它是基於往cookie寫入一個JSESSIONID來實現的,所以,只要你不是打開一個隱身窗口,無論你開多少個標簽頁,不同標簽頁之間都會被認為是一個session,你在這個標簽頁登錄了,新開一個標簽輸入地址,仍然是登錄狀態。

sessionStorage的session

但是直到今天才發現,HTML5中的這個sessionStorage和傳統后台的session並不完全是同一個東西,主要是在多個標簽頁數據是否會共享的問題上的不同。

誤區:之前一直以為,同一個窗口,只要會話還沒有過期,不同標簽頁之間,相同域名下的sessionStorage是一樣的。

正確答案:刷新當前頁面,或者通過location.hrefwindow.open、或者通過帶target="_blank"a標簽打開新標簽,之前的sessionStorage還在,但是如果你是主動打開一個新窗口或者新標簽,對不起,打開F12你會發現,sessionStorage空空如也。

也就是說,sessionStoragesession僅限當前標簽頁或者當前標簽頁打開的新標簽頁,通過其它方式新開的窗口或標簽不認為是同一個session

大家可以親自測試一下,手動打開的新標簽和點A標簽打開的新標簽效果完全不一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM