Cookie與Session 關係

admin發表於2019-10-24

Cookie與Session分別位於客戶端和伺服器端。

兩者本來就沒有什麼太大關係,不過大多數時候Session還是要依賴於Cookie。

關於Cookie與Session介紹可以參閱如下兩篇文章:

(1).JavaScript cookie一章節。

(2).Session 簡介一章節。

HTTP協議是無狀態的,任意兩次請求之間都是獨立的,毫無關係。

所以Cookie應運而生,用於維護請求之間的會話狀態,也可以儲存一些其他資訊。

但是由於Cookie儲存於本地客戶端,安全性較低,比如儲存使用者名稱和密碼就比較不安全。

於是推薦使用Session來維護會話狀態,因為更為安全,因為資訊都儲存在伺服器端,盡人所知。

Session大多數時候依賴於Cookie:

從上面的介紹來看,好像兩者沒有任何關係,但是大多數時候Session依賴於Cookie。

下面對Session的運作進行一下簡述:

(1).客戶端向伺服器發起HTTP(S)請求。

(2).伺服器端收到請求,並執行指定的程式碼建立一個Session物件。

(3).請求使用者可能成千上萬,要維護會話狀態,必須要進行身份識別。

(4).在Session物件建立的時候會生成一個session_id,用於唯一標識當前請求使用者的身份。

(5).通過伺服器響應將此session_id傳送到客戶端,並儲存於cookie中。

(6).當再次傳送HTTP(S)請求,session_id會隨同傳送到伺服器。

(7).然後根據此session_id進行身份識別,找到對應的Session物件,並獲取相關使用者資訊。

從上面的介紹可見,session_id儲存於客戶端的Cookie中,所以說Session大多數情況依賴於Cookie。

為什麼說大多數情況,如果客戶端禁用Cookie,可以通過URL方式傳遞session_id,但幾乎沒有這麼用的。

相關文章