Session、Cookie和Token的主要區別

Session、Cookie和Token的主要區別

HTTP協議本身是無狀態的。什麼是無狀態呢,即服務器無法判斷用戶身份, 也就是說無法知道上一次請求的對象是誰, 此時就要使用到會話跟蹤技術

什麼是cookie

cookie是由Web服務器保存在用戶瀏覽器上的小文件(key-value格式),包含用戶相關的信息。客戶端向服務器發起請求,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶身份。

什麼是session

session是依賴Cookie實現的。session是服務器端對象

session 是瀏覽器和服務器會話過程中,服務器分配的一塊儲存空間。服務器默認爲瀏覽器在cookie中設置 sessionid,瀏覽器在向服務器請求過程中傳輸 cookie 包含 sessionid ,服務器根據 sessionid 獲取出會話中存儲的信息,然後確定會話的身份信息。

cookie與session區別

  • 存儲位置與安全性:cookie數據存放在客戶端上,安全性較差,session數據放在服務器上,安全性相對更高;
  • 存儲空間:單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie,session無此限制
  • 佔用服務器資源:session一定時間內保存在服務器上,當訪問增多,佔用服務器性能,考慮到服務器性能方面,應當使用cookie。

什麼是Token

Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作出相應提示,在這樣的背景下,Token便應運而生。

Token的定義:Token是服務端生成的一串字符串,以作客戶端進行請求的一個令牌,當第一次登錄後,服務器生成一個Token便將此Token返回給客戶端,以後客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。

使用Token的目的:Token的目的是爲了減輕服務器的壓力,減少頻繁的查詢數據庫,使服務器更加健壯。

Token 是在服務端產生的。如果前端使用用戶名/密碼向服務端請求認證,服務端認證成功,那麼在服務端會返回 Token 給前端。前端可以在每次請求的時候帶上 Token 證明自己的合法地位

session與token區別

  • session機制存在服務器壓力增大,CSRF跨站僞造請求攻擊,擴展性不強等問題;
  • session存儲在服務器端,token存儲在客戶端
  • token提供認證和授權功能,作爲身份認證,token安全性比session好;
  • session這種會話存儲方式方式只適用於客戶端代碼和服務端代碼運行在同一臺服務器上,token適用於項目級的前後端分離(前後端代碼運行在不同的服務器下)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章