token,session以及cookie的區別
什么是Cookie
cookie 是一個非常具體的東西,指的就是瀏覽器里面能永久存儲的一種數據。
cookie由服務器生成,發送給瀏覽器,瀏覽器把cookie以key--value形式保存到某個目錄下的文本文件內,下一次請求同一網站時會把該cookie
發送給服務器。由於cookie是存在客戶端上的
什么是Session
session 從字面上講,就是會話。session就是為了處理上下文接口進行會話--為了保持接口會話的一致性
Session是一種服務器端的機制,Session 對象用來存儲特定用戶會話所需的信息。
Session的根本作用就是在服務端存儲用戶和服務器會話的一些信息。典型的應用有:
1、判斷用戶是否登錄。
2、購物車功能。
什么是Token
Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,
並作出相應提示,在這樣的背景下,Token便應運而生。
Token的定義:Token是服務端生成的一串字符串,以作客戶端進行請求的一個令牌進行訪問。token在服務器時可以不用存儲用戶信息的,
token傳遞的方式也不限於cookie傳遞,token也可以保存起來。
使用Token的目的:Token的目的是為了減輕服務器的壓力,減少頻繁的查詢數據庫,使服務器更加健壯
token的特點:
1.無狀態--服務器不需要記錄任何東西,每次都是一個無狀態的請求,每次都是通過解密來驗證是否合法。
2.在網絡傳輸的過程中,性能更好
3.不需要綁定到一個特定的身份驗證方案。Token可以在任何地方生成,只要在 你的API被調用的時候, 你可以進行Token生成調用即可.
Cookie和Session的區別:
1、存放位置不同
Cookie保存在客戶端,Session保存在服務端。
2 、存取方式的不同
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二進制數據,需求先進行編碼。Cookie中也不能直接存取Java對象。若要存儲
略微復雜的信息,運用Cookie是比擬艱難的。
3丶存儲容量不同
單個cookie保存的數據<=4KB,一個站點最多保存20個Cookie,對於session來說並沒有上限,但出於對服務器端的性能考慮,session內不要存
放過多的東西,並且設置session刪除機制。
4、安全隱私不同
cookie對客戶端是可見的,所以它是不安全的。session存儲在服務器上,不存在敏感信息泄漏的風險
5丶跨域支持上不同
cookie支持跨域名訪問,session不支持跨域名訪問