1. 程式人生 > >cookie與session;sessionStorage、globalStorage與localStorage

cookie與session;sessionStorage、globalStorage與localStorage

一. cookie與session

 存在的原因

  1. http是無狀態的協議,客戶端每次傳送請求都會重新驗證身份
  2. 為了在一次會話中便於驗證客戶端身份,服務端採取了cookie機制
  3. 實現方法是伺服器返回Set-Cookie的HTTP頭資訊並由客戶端儲存,之後客戶端每次傳送請求都會帶上cookie作為自己的身份證明

相同點:都可以用來跟蹤會話,實現客戶端的身份整明

不同點

  1. cookie儲存在客戶端,session儲存在服務端
  2. cookie在客戶端有數量(20-50/域)和長度(4kb)限制,session受限於硬體
  3. cookie儲存在客戶端可被篡改有安全問題,session儲存在服務端無法被客戶端修改
  4. cookie的生命週期可控,session的生命週期

關聯:

  1. session執行依賴於session id,這個id會被客戶端儲存在cookie中
  2. 如果客戶端禁用cookie,則session也一樣會失效,解決辦法是URL重寫(url地址後加上如sid=xxxx這樣的引數證明身份)

參考:

https://www.zhihu.com/question/19786827

https://www.jianshu.com/p/f5ce60f12e9f

二、sessionStorage、globalStorage與localStorage 

Web Storage的作用:

  1.  提供一種在cookie之外儲存會話資料的途徑
  2. 儲存大量 可以跨會話的資料(大小因瀏覽器而不同,2-10Mb)
  3. Storage一種型別,也是object,有特定的方法

sessionStorage:

儲存特定於某個會話的資料,直到瀏覽器關閉,有同步寫入和非同步寫入的區別

globalStorage:

儲存跨會話資料,應對其指定可訪問的域名,不清除則一直存在

localStorage:

在html5中取代了globalStorage,區別在於localStorage無法指定訪問規則,只能由同一個域名訪問儲存物件

 

三、IndexDB

定義:在瀏覽器中儲存結構化資料的一種資料庫

原因:開發者需要在本地進行永久儲存

特點:使用物件儲存資料,而非表