導航
1、session+cookie 和 token有什麼區別?
首先了解一下什麼是session、cookie和token
Session
Session存在於服務端,對於客戶端來說是沒有Session這個說法的,當服務端與客戶端進行連接的時候,服務端的Session就會轉換爲一個臨時的Cookie發送給客戶端,如果是Session不存在的話,服務端就會創建一個Session,如果存在的話,就會使用這個Session(當用戶從網站的服務器上退出的時候,那麼這個Session也會隨之消失)。
如果是服務器做了負載均衡的話,在不同的服務器上Session會失效,就要使用有些技術來實現Session的同步。
Cookie
存儲在瀏覽器上,一個瀏覽器可以存儲的Cookie爲200個,一個web的網站能設置的Cookie不能超過20個,Cookie的大小不能超過4K
1、客戶端發送HTTP請求到服務端
2、服務端收到請求之後,會發送一個響應頭到客戶端,這個響應頭就包含Set-Cookie的頭部
3、客戶端發送第三次的請求(如果說服務需要我們發送一個Cookie的話,那麼在第二次的過程中時,就會將上一次拿到的Cookie發送個服務端),提供了服務端可以識別客戶端的信息。
持久化的Cookie和非持久化的Cookie
持久化的Cookie:可以存在於硬盤中,瀏覽器關閉的話,Cookie也是會存在的。
非持久化的Cookie:存在與內存中,如果瀏覽器關閉的話,Cookie也會隨之消失。
token
(1)用戶第一次登陸的時候,服務端會產生一個token,token會存在於服務器的數據庫上,然後將這個token返回給瀏覽器。
(2)客戶端收到token之後會將token存儲在本地上
(3)客戶端再次發送請求的時候,會將token發送到服務器上
(4)服務端收到這個token的時候會將token與本地的token進行比較,可以來驗證身份。
小結
1、session存儲於服務器,可以理解爲一個狀態列表,擁有一個唯一識別符號sessionId,通常存放於cookie中。服務器收到cookie後解析出sessionId,再去session列表中查找,才能找到相應session。依賴cookie
2、cookie類似一個令牌,裝有sessionId,存儲在客戶端,瀏覽器通常會自動添加。
3、token也類似一個令牌,無狀態,用戶信息都被加密到token中,服務器收到token後解密就可知道是哪個用戶。需要開發者手動添加。
瀏覽器是如何記錄用戶登陸狀態的?
so easy!