Cookie與session,sessionStorage 與LocalStorage的區別

cookie:
cookie數據存放在客戶端瀏覽器上;
始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞,每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如回話標識 sessionId;
有路徑(path)的概念,可以限制,cookie只屬於某個路徑下;
cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session。所以cookie一般用來存放不敏感的信息,比如用戶設置的網站主題;
cookie可以服務器端響應的時候設置,也可以客戶端通過JS設置cookie會在請求時在http首部發送給客戶端。單個cookie保存的數據不能超過4k,很多瀏覽器都限制一個站點最多保存20個cookie

session:
session數據放在服務器上,session會在一定時間內保存服務器上。當訪問增多,會比較佔用服務器的性能。考慮到減輕服務器性能方面,應當使用cookie;
敏感的信息用session存儲,比如用戶的登陸信息,session可以存放於文件,數據庫,內存中都可以;

從多方面看cookie和localStorage 與sessionStorage:
生命週期:
cookie:可以設置失效時間,若不設置,默認是關閉瀏覽器後失效。
LocalStorage:除非自己手動清除,否則永久保存。
SessionStorage:僅在當前網頁會話下有效,關閉頁面或者瀏覽器後就會被清除。

存放大小:
cookie:4k左右
LocalStorage和SessionStorage:可以保存5M的信息。

http請求:
cookie:每次都會攜帶在http頭中,如果使用cookie保存過多數據,會帶來性能問題。
LocalStorage和SessionStorage:僅在客戶端瀏覽器中保存,不參與和服務器的通訊。

易用性:
cookie:需要程序員自己封裝,原生的cookie接口不友好。
LocalStorage和SessionStorage:既可採用原生接口,也可以再次封裝。

應用場景:
從安全性來說,因cookie在每次http請求時都會攜帶,會浪費帶寬,所以應儘可能少用,此外cookie還需要指定作用域,不可以跨域調用,限制很多,但是用戶識別用戶登錄來說,cookie比storage好用;
其他情況下可以使用storage,LocalStorage始終有效,窗口或瀏覽器關閉也一直保存,可以用來在頁面傳遞參數,用作持久數據,SessionStorage可以用來保存一些臨時數據,防止用戶刷新頁面後丟失了一些參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章