徹底理解Cookie Session token

Cookie
cookie 是一個非常具體的東西,指的是瀏覽器中能永久存儲的一種數據,僅僅是瀏覽器實現的一種數據存儲功能
Cookie的內容是保存一小段文本信息,這些文本信息組成一份通行證。它是客戶端對於無狀態協議的一種解決方案。

Cookie的原理

(1)客戶端第一次請求時,發送數據到服務器。

(2)服務器返回響應信息的同時,還會傳回一個cookie(cookie S-001)

(3)客戶端接收服務器的響應之後,瀏覽器會將cookie存放在一個統一的位置。

(4)客戶端再次向服務器發送請求的時候,會把Cookie S-001再次發揮服務器。
在這裏插入圖片描述
cookie的生命週期

cookoe的生存時間是整個會話期間:瀏覽器會將cookie保存在內存中,瀏覽器關閉時自動刪除這個cookie

cookie的生存時間是長久有效的:手動將cookie報存在客戶端的硬盤中,瀏覽器關閉的話,cookie頁不會清除;下次在打開瀏覽器訪問對應網站內容,這個cookie就會自動再次發送到服務器。

session的原理:

(1)服務器在處理客戶端請求過程中會創建session,並且爲該session生存唯一的session ID。(這個session ID在隨後的請求中會被用來重新獲得已經創建的session。在session被創建後,就可以調用session相關的方法向session中新增內容,這些內容只會保存在服務器中)

(2)服務器將session ID發送到客戶端

(3)當客戶端再次請求時,就會帶上這個session ID

(4)服務器接收到請求之後就會一句Session ID 找到相應的Session ,完成請求

ps:1、雖然session保存在服務器,但它還是需要客戶端瀏覽器的支持,因爲session需要使用cookie作爲識別標誌。服務器會向客戶端發送一個名爲JSEDDIONID的cookie,它的值爲session ID。

    2、當cookie被禁用時,可以使用url重寫的方法:將session寫在URL中,服務器在進行解析

在這裏插入圖片描述
session的生命週期:

與cookie一直,服務器也能設置session的生效時間。

cookie和session的區別

1、存儲位置不同:session存儲在服務器,cookie存儲在客戶端

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就派不上用場。

Token的原理:

(1)客戶端第一次請求時,發送用戶信息到服務器。服務器對用戶信息使用HSA256算法及密鑰進行簽名,再將這個簽名和數據一起作爲token返回給客戶戶端。

(2)服務端不再保存token,客戶端保存token。

(3)當客戶端再次發送請求時,在請求信息中將token一起發送給服務器。

(4)服務器用同樣的HSA256算法和密鑰,對數據再計算一次簽名,和token的簽名做比較

(5)如果相同,服務器就知道客戶端登錄過,則反之。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章