前端提升(16)之 session+cookie 和 token有什麼區別? + 瀏覽器是如何記錄用戶登陸狀態的?

導航

在這裏插入圖片描述

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!

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