cookie webstroge session token 理解區別與聯繫

http是一個無狀態協議
什麼是無狀態呢?就是說這一次請求和上一次請求是沒有任何關係的,互不認識的,沒有關聯的。


瀏覽器本地存儲與服務器端存儲的區別
一、瀏覽器能夠保存一些數據,須要的時候直接從本地存取,sessionStorage、localStorage和cookie都是由瀏覽器存儲在本地的數據
一、服務器端能夠保存用戶的持久數據,如數據庫和雲存儲將用戶的大量數據保存在服務器端
二、服務器端也能夠保存用戶的臨時會話數據,服務器端的session機制,如jsp的session對象,數據保存在服務器上,


session機制:服務器端的機制(服務器端建立session id)
 Session 是一種HTTP存儲機制,目的是爲無狀態的HTTP提供的持久機制。所謂Session 認證只是簡單的把User 信息存儲到Session 裏
當程序須要爲某個客戶端的請求建立一個session時,(服務器端插入數據)服務器首先檢查這個客戶端的請求裏是否已包含了一個session標識(稱爲session id),
若是已包含則說明之前已經爲此客戶端建立過session,服務器就按照session id把這個session檢索出來使用(檢索不到,會新建一個),
若是客戶端請求不包含session id,則爲此客戶端建立一個session而且生成一個與此session相關聯的session id,
session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字符串,這個session id將被在本次響應中返回給客戶端保存。
保存這個session id的方式能夠採用cookie,這樣在交互過程當中瀏覽器能夠自動的按照規則把這個標識發送給服務器。


cookie被稱爲會話cookie。
cookie的內容主要包括:名字,值,過時時間,路徑和域。路徑與域一塊兒構成cookie的做用範圍。
若不設置時間,則表示這個cookie的生命期爲瀏覽器會話期間,關閉瀏覽器窗口,cookie就會消失。
這種生命期爲瀏覽器會話期的cookie被稱爲會話cookie。
保存這個session id的方式能夠採用cookie,這樣在交互過程當中瀏覽器能夠自動的按照規則把這個標識發送給服務器。


cookie 和session 的區別:
一、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
二、cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
三、session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。
四、單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。


token 機制(令牌)用戶身份的驗證方式
token(令牌) 由 uid+time+sign簽名[+固定參數] 組成字符串
客戶端使用用戶名和密碼請求登陸。服務端收到請求,驗證用戶名和密碼。驗證成功後,
服務端會生成一個token,而後把這個token發送給客戶端。
客戶端收到token後把它存儲起來,能夠放在cookie或者Local Storage(本地存儲)裏。
客戶端每次向服務端發送請求的時候都須要帶上服務端發給的token。
服務端收到請求,而後去驗證客戶端請求裏面帶着token,若是驗證成功,就向客戶端返回請求的數據。


web Storage
Web Storage的概念和cookie類似,區別是它是爲了更大容量存儲設計的,
sessionStorage、localStorage、cookie都是在瀏覽器端存儲的數據,
其中sessionStorage的概念很特別,引入了一個「瀏覽器窗口」的概念,sessionStorage是在同源的同學口中,始終存在的數據,
也就是說只要這個瀏覽器窗口沒有關閉,即便刷新頁面或進入同源另外一個頁面,數據仍然存在,關閉窗口後,sessionStorage就會被銷燬,
同時「獨立」打開的不一樣窗口,即便是同一頁面,sessionStorage對象也是不一樣的
sessionStorage僅在當前瀏覽器窗口關閉前有效,天然也就不可能持久保持
localStorage始終有效,窗口或瀏覽器關閉也一直保存,所以用做持久數據;cookie只在設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉
web storage擁有setItem,getItem,removeItem,clear等方法,不像cookie須要前端開發者本身封裝setCookie,getCookie。
一旦數據保存在本地以後,就能夠避免再向服務器請求數據,所以減小沒必要要的數據請求,
 
 
聯繫
token就是令牌,好比你受權(登陸)一個程序時,他就是個依據,判斷你是否已經受權該軟件;
cookie就是寫在客戶端的一個txt文件,裏面包括你登陸信息之類的,這樣你下次在登陸某個網站,就會自動調用cookie自動登陸用戶名;
session和cookie差很少,只是session是寫在服務器端的文件,也須要在客戶端寫入cookie文件,可是文件裏是你的瀏覽器編號.
Session的狀態是存儲在服務器端,客戶端只有session id;而Token的狀態是存儲在客戶端。
相關文章
相關標籤/搜索