cookie和session的區別詳解

2021-09-01 19:28:14 字數 1845 閱讀 1896

cookie 和 session的區別

1,使用cookie實現狀態保持的原理:

當客戶登入**的時候,使用者進行表單提交,瀏覽器向服務端傳送post請求,伺服器接收請求,處理引數,返回響應。

如果伺服器發現請求報文中存在cookie資訊,那麼伺服器會將這個cookie資訊與伺服器中已經存在的cookie資訊進行對比,以獲取使用者狀態。

如果伺服器發現請求報文中不存在cookie,那麼伺服器會針對當前使用者生成乙個cookie,並附加在響應報文中傳送給瀏覽器。

瀏覽器接收到cookie後,會將其儲存在本地,下一次對這一**請求時,會將cookie資訊連同請求報文一起傳送給伺服器,

伺服器接收到響應報文後,瀏覽器傳送的cookie與伺服器已經儲存的cookie資訊做對比,如果一樣,伺服器就可以獲取客戶當前的狀態,實現狀態保持。

cookie的特點:

cookie是明文的,一般是由名字,值,過期時間,路徑和域構成的,儲存在瀏覽器端,其儲存方式有兩種:

如果cookie的過期時間是當瀏覽器關閉cookie就失效(即會話cookie),瀏覽器就會將其存放在記憶體中,

如果過期時間不是會話cookie,瀏覽器會將其存放到硬碟上,直到cookie過了過期時間,會由瀏覽器或者第三方工具來刪除cookie。

一般來說cookie的單個大小不超過4k,對於同乙個**而言,瀏覽器最多儲存20個cookie,

由於非會話cookie會以文字檔案的形式存放在硬碟上,因此cookie的不安全性就成為了cookie的最大缺點,可以通過分析或者偽造cookie的方式進行欺騙。

另外:cookie除了可以由服務端建立外,也可以在客戶端使用客戶端指令碼建立,此時伺服器的響應報文中會附加乙個特殊的字段,瀏覽器收到響應報文後,會根據這個特殊的字段生成伺服器特定的cookie,並儲存在本地,或者傳送給伺服器。

2,使用session進行狀態保持的原理

當瀏覽器端向伺服器段傳送請求時,服務端會首先檢查瀏覽器的請求中是否存在session_id資訊,

如果存在,則通過session_id查詢到session_data,進行使用或者狀態更新,

如果不存在,則會建立乙個session_id 和session_data,並將session_data存放在服務端,將session_id連同響應一併傳回瀏覽器,

session_id一般是個不容易仿造,不容易找到規律,且唯一的隨機字串,

瀏覽器一般會把session_id儲存在cookie中,因此,session是基於cookie存在的,但有時候在瀏覽器端有可能會人為的禁用cookie,

這時就需要使用其他手段使session_id順利儲存在瀏覽器端,這裡一般使用兩種方式:

1,url重寫,就是把session_id放入url路徑中,傳送給客戶端,

2,表單隱藏字段,就是在表單中,放置乙個隱藏的字段,將session_id寫入,傳送給瀏覽器,

當瀏覽器又一次請求伺服器時,就會攜帶session_id,伺服器通過session_id查詢到session_data,識別使用者,這樣就實現了狀態保持。

session的特點:

session是加密的,是通過類似字典一樣的鍵值對的方式進行儲存的,

設定session時需要乙個secret key,用來加密session,

session資訊會儲存在伺服器端,session_id會以乙個字串的形式儲存在瀏覽器端,

由於session資訊會儲存在伺服器端,如果使用者量比較大,會很大程度上增加伺服器的壓力,因此可以使用cookie來實現狀態保持

一些使用者量比較大的公司如facebook,都是使用cookie進行的狀態保持。

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...

cookie和session的區別

分類 計算機網路 2011 10 21 10 43 4785人閱讀收藏 舉報 session 瀏覽器伺服器 servlet url儲存 一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我...