cookie
-
由於HTTP是一種無狀態的協議,服務器單從網絡連接上是無法知道客戶身份的。這時候服務器就需要給客戶端頒發一個cookie,用來確認用戶的身份。
-
cookie就是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息
session
- Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。
- HTTP協議是無狀態的,Session不能依據HTTP連接來判斷是否為同一個用戶。於是乎:服務器向用戶瀏覽器發送了一個名為JESSIONID的Cookie,它的值是Session的id值。其實Session依據Cookie來識別是否是同一個用戶
session和cookie的區別
- Cookie數據存放在客戶端,Session數據放在服務器端。
- Cookie的安全性一般,他人可通過分析存放在本地的Cookie並進行Cookie欺騙。在安全性第一的前提下,選擇Session更優。重要交互信息比如權限等就要放在Session中,一般的信息記錄放Cookie中。
- 單個Cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個Cookie,而Session原則上沒有限制。
- Session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能考慮到減輕服務器性能方面,應當使用Cookie。
- Session 的運行依賴Session ID,而 Session ID 是存在 Cookie 中的,也就是說,如果瀏覽器禁用了 Cookie,Session 也會失效(但是可以通過其它方式實現,比如在 url 中傳遞 Session ID,也就是地址重寫)。
localStorage
- localStorage生命周期是永久,這意味着除非用戶顯示在瀏覽器提供的UI上清除localStorage信息,否則這些信息將永遠存在。存放數據大小為一般為5MB,而且它僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。
sessionStorage
- sessionStorage 的有效期是頁面會話持續,如果頁面會話(session)結束(關閉窗口或標簽頁),sessionStorage 就會消失。而 localStorage 則會一直存在。
webstorage是本地存儲,存儲在客戶端,包括localstorage和sessionstorage。localStorage生命周期是永久的,除非被清除,否則永久保存,而sessionStorage僅在當前會話下有效,關閉頁面或瀏覽器后被清除