cookie、session和token的區別
cookie:
· 表示用戶身份,一小段文本信息
· 服務端生成,發送客戶端保存,正在客戶端頭信息中,可能被用戶篡改。
· 相當於鑰匙,服務端用於驗證鑰匙是不是正確的。
· cookie格式:key:value;key:value;key:value;
session:
· 標識用戶用戶身份
· 服務端生成,服務端保存(產生sessionID,會發送sessionID給客戶端在cookie里面),占用內存,增大服務器負擔
· 請求帶上sessionID,服務器通過sessionID找到對應session
· 常用redis
token:
· 標識用戶身份一串字符串
· 服務端加密生成的令牌,保存在客戶端
· 客戶端請求帶上token,服務端對token解密對比即可驗證身份和密碼
· Token的目的是為了減輕服務器的壓力,減少頻繁的查詢數據庫,使服務器更加健壯。
cookie和session的區別:
2、存儲容量不同:單個cookie保存數據小於等於4kb,一個站點最多保存20個cookie;session沒有上限,但是由於服務器內存性能考慮,session不要存太多東西,並有刪除機制
3、存取方式不同:cookie只能保存ASCII字符串;session能存取任何類型的數據
4、隱私策略不同:cookie是對客戶端是可見的,可以分析存放在本地的cookie並進去cookie欺騙;session存儲在服務器上,對於客戶端是透明的,不存在敏感信息泄露的風險
5、服務器壓力不同:
>>>session是保存在服務端,每隔用戶都會產生一個session。加入並發訪問的用戶太多,會產生很多的session,對服務器是一個很大的負擔,耗費大量內存
>>>cookie保管在客戶端,不占用服務器資源。對於並發用戶十分多的網站,session是一個很好的選擇。
6、瀏覽器的支持不同:session不支持新建窗口,只支持字窗口。而cookie都支持。
假設瀏覽器禁用cookie,session可以通過URL重寫的方法實現。COOKIE就派不上用場。