1. 程式人生 > 實用技巧 >Cookie、Session、Token的區別

Cookie、Session、Token的區別

Cookie:是儲存在瀏覽器本地的資訊,以字串內鍵值對的形式儲存會話資訊(類似於JSON字串);

適用場景:由於HTTP協議是無狀態、無連線的超文字傳輸協議,所以無法對使用者會話進行跟蹤連線,所以將會話資訊儲存到cookie,這樣瀏覽器訪問服務端的時候就能知道先前的連線會話資訊;一般該資訊記錄使用者身份,當然cookie也常記錄跟蹤購物車的商品資訊(如數量)、記錄使用者訪問次數等。

安全性:由於在本地儲存,不安全;

生命週期:在瀏覽器中發起一個會話即新建的一個cookie文字,關閉瀏覽器視窗即cookie失效,這稱為會話cookie;當然也可以設定cookie的有效時長,則會儲存在本地直到失效,例如

Response.Cookies(“LastView”).Expires=# 1/29/2003 #   設定cookie到2003年1月29號失效;
c.setMaxAge(365*24*60*60);//一年;

容量:一般為4k

session:是儲存在服務端的資訊,可以儲存任何資料;

適用場景:session又稱為會話狀態,用於維護瀏覽器中例項相關的一些資訊;例如在開發中要將獲取到的使用者物件儲存到session中;

生命週期:當瀏覽器第一次訪問伺服器時,伺服器會生成一個sessionID併發送給瀏覽器,以及生成session,在tomcat中的預設有效時長是30min;也可以設定有效期或者手動刪除 session;

安全性:相對cookie更安全;因為如果要訪問session,要先獲取到cookie中加密的sessionID;

容量:無限制(但是顯然要合理利用)

參考網址:https://www.cnblogs.com/zhangkai2237/archive/2012/03/22/2410890.html

Token:是一種認證方式,“令牌”,根據使用者的id和密碼生成的唯一的字串;

適用場景:用於身份認證;當客戶端頻繁的從服務端請求資料,導致服務端頻繁到資料庫核對使用者名稱和密碼,此時以裝置號/裝置mac地址Token,只要客戶端持有引數就可以直接請求資料,無需使用者名稱和密碼,否則返回錯誤資訊;

生命週期:

當客戶端第一次登入後,服務端生成Token,並傳給客戶端,儲存到cookie或local Storage中;

參考網址:https://blog.csdn.net/cmj6706/article/details/79032703