cookie與session;sessionStorage、globalStorage與localStorage
阿新 • • 發佈:2018-11-08
一. cookie與session
存在的原因:
- http是無狀態的協議,客戶端每次傳送請求都會重新驗證身份
- 為了在一次會話中便於驗證客戶端身份,服務端採取了cookie機制
- 實現方法是伺服器返回Set-Cookie的HTTP頭資訊並由客戶端儲存,之後客戶端每次傳送請求都會帶上cookie作為自己的身份證明
相同點:都可以用來跟蹤會話,實現客戶端的身份整明
不同點:
- cookie儲存在客戶端,session儲存在服務端
- cookie在客戶端有數量(20-50/域)和長度(4kb)限制,session受限於硬體
- cookie儲存在客戶端可被篡改有安全問題,session儲存在服務端無法被客戶端修改
- cookie的生命週期可控,session的生命週期
關聯:
- session執行依賴於session id,這個id會被客戶端儲存在cookie中
- 如果客戶端禁用cookie,則session也一樣會失效,解決辦法是URL重寫(url地址後加上如sid=xxxx這樣的引數證明身份)
參考:
https://www.zhihu.com/question/19786827
https://www.jianshu.com/p/f5ce60f12e9f
二、sessionStorage、globalStorage與localStorage
Web Storage的作用:
- 提供一種在cookie之外儲存會話資料的途徑
- 儲存大量 可以跨會話的資料(大小因瀏覽器而不同,2-10Mb)
- Storage一種型別,也是object,有特定的方法
sessionStorage:
儲存特定於某個會話的資料,直到瀏覽器關閉,有同步寫入和非同步寫入的區別
globalStorage:
儲存跨會話資料,應對其指定可訪問的域名,不清除則一直存在
localStorage:
在html5中取代了globalStorage,區別在於localStorage無法指定訪問規則,只能由同一個域名訪問儲存物件
三、IndexDB
定義:在瀏覽器中儲存結構化資料的一種資料庫
原因:開發者需要在本地進行永久儲存
特點:使用物件儲存資料,而非表