Session 與 Cookie 的關(guān)系:
一般來說,Session 基于 Cookie 來實現(xiàn)。
Cookie
- 服務(wù)器通過 Set-Cookie 頭給客戶端一串字符串
- 客戶端每次訪問相同域名的網(wǎng)頁時,必須帶上這段字符串
- 客戶端要在一段時間內(nèi)保存這個Cookie
- Cookie 默認(rèn)在用戶關(guān)閉頁面后就失效,后臺代碼可以任意設(shè)置 Cookie 的過期時間
- 大小大概在 4kb 以內(nèi)
Session(不翻譯)
- 將 SessionID(隨機(jī)數(shù))通過 Cookie 發(fā)給客戶端
- 客戶端訪問服務(wù)器時,服務(wù)器讀取 SessionID
- 服務(wù)器有一塊內(nèi)存(哈希表)保存了所有 session
- 通過 SessionID 我們可以得到對應(yīng)用戶的隱私信息,如 id、email
- 這塊內(nèi)存(哈希表)就是服務(wù)器上的所有 session
LocalStorage
- LocalStorage 跟 HTTP 無關(guān)
- HTTP 不會帶上 LocalStorage 的值
- 只有相同域名的頁面才能互相讀取 LocalStorage(沒有同源那么嚴(yán)格)
- 每個域名 localStorage 最大存儲量為 5Mb 左右(每個瀏覽器不一樣)
- 常用場景:記錄有沒有提示過用戶(沒有用的信息,不能記錄密碼)
- LocalStorage 永久有效,除非用戶清理緩存
SessionStorage(會話存儲)
1、2、3、4 同上
- SessionStorage 在用戶關(guān)閉頁面(會話結(jié)束)后就失效。