前后端分離 token和cookie對比


HTTP協議本身是無狀態的,所以需要一個標志來對用戶身份進行驗證

 

1、cookie

用戶登錄成功后,會在服務器存一個session,同時發送給客戶端一個cookie,這個cookie里面有唯一標識該用戶的sessionID

數據需要客戶端和服務器同時存儲

用戶再進行請求操作時,需要帶上cookie,在服務器進行驗證

cookie是有狀態的

 

2、token

用戶進行任何操作時,都需要帶上一個token

token的存在形式有很多種,header/requestbody/url 都可以

這個token只需要存在客戶端,服務器在收到數據后,進行解析

token是無狀態的

 

token相對cookie的優勢

   1、支持跨域訪問 ,將token置於請求頭中,而cookie是不支持跨域訪問的;

   2、無狀態化, 服務端無需存儲token ,只需要驗證token信息是否正確即可,而session需要在服務端存儲,一般是通過cookie中的sessionID在服務端查找對應的session;

   3、 無需綁定到一個特殊的身份驗證 方案(傳統的用戶名密碼登陸),只需要生成的token是符合我們預期設定的即可;

   4、 更適用於移動端 (Android,iOS,小程序等等),像這種原生平台不支持cookie,比如說微信小程序,每一次請求都是一次會話,當然我們可以每次去手動為他添加cookie,詳情請查看博主另一篇博客;

   5、 避免CSRF跨站偽造攻擊 ,還是因為不依賴cookie;

   6、 非常適用於RESTful API ,這樣可以輕易與各種后端(java,.net,python…)相結合,去耦合


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM