1. 程式人生 > >HTTP高級(Cookie,Session ,LocalStorage )

HTTP高級(Cookie,Session ,LocalStorage )

ssi 過期 網頁 內存 重要 信息 緩存 storage con

Cookie

  1. 服務器通過 Set-Cookie 頭給客戶端一串字符串
  2. 客戶端每次訪問相同域名的網頁時,必須帶上這段字符串
  3. 客戶端要在一段時間內保存這個Cookie
  4. Cookie 默認在用戶關閉頁面後就失效,後臺代碼可以任意設置 Cookie 的過期時間
  5. 大小大概在 4kb 以內

Session

  1. 將 SessionID(隨機數)通過 Cookie 發給客戶端
  2. 客戶端訪問服務器時,服務器讀取 SessionID
  3. 服務器有一塊內存(哈希表)保存了所有 session
  4. 通過 SessionID 我們可以得到對應用戶的隱私信息,如 id、email
  5. 這塊內存(哈希表)就是服務器上的所有 session

LocalStorage

  1. LocalStorage 跟 HTTP 無關
  2. HTTP 不會帶上 LocalStorage 的值
  3. 只有相同域名的頁面才能互相讀取 LocalStorage(沒有同源那麽嚴格)
  4. 每個域名 localStorage 最大存儲量為 5Mb 左右(每個瀏覽器不一樣)
  5. 常用場景:記錄有沒有提示過用戶(沒有用的信息,不能記錄密碼)
  6. LocalStorage 永久有效,除非用戶清理緩存

SessionStorage(會話存儲)

1、2、3、4 同上

5、SessionStorage 在用戶關閉頁面(會話結束)後就失效。


Cookie 和 Session 的區別

  • cookie機制采用的是在客戶端保持狀態的方案,而session機制采用的是在服務器端保持狀態的方案。
  • cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
  • cookie不是很安全, 可以被篡改, 考慮到安全應當使用session。
  • 單個cookie保存的數據一般不超過4K,而session的內存比較大
  • 一般將登陸信息等重要信息存放為SESSION, 免登陸功能數據就可以放在COOKIE中

Cookie 和 LocalStorage 的區別

  • Cookie會被瀏覽器帶到服務器; 而LocalStorage與HPPT無關。
  • 單個Cookie保存的數據一般不超過4K;每個域名LocalStorage最大存儲量為5MB左右。
  • 客戶端在一定時間內保存Cookie,關閉頁面後失效;LocalStorage永久有效,除非清除緩存。

LocalStorage 和 SessionStorage 的區別

  • LocalStorage永久有效,除非清除緩存。SessionStorage在頁面關閉後失效。

Cache-Control: max-age=1000 緩存 與 ETag 的「緩存」有什麽區別?

  • Cache-Control: max-age=1000 緩存,是1000秒內不返回請求
  • ETag 的「緩存」,是返回請求響應體為空

HTTP高級(Cookie,Session ,LocalStorage )