Cookie 和 Session 有什麼區別

2021-09-26 10:34:02 字數 1992 閱讀 6942

什麼是 cookiehttp cookie(也叫 web cookie或瀏覽器 cookie)是伺服器傳送到使用者瀏覽器並儲存在本地的一小塊資料,它會在瀏覽器下次向同一伺服器再發起請求時被攜帶併發送到伺服器上。通常,它用於告知服務端兩個請求是否來自同一瀏覽器,如保持使用者的登入狀態。cookie 使基於無狀態的 http 協議記錄穩定的狀態資訊成為了可能。

cookie 主要用於以下三個方面:會話狀態管理(如使用者登入狀態、購物車、遊戲分數或其它需要記錄的資訊)

個性化設定(如使用者自定義設定、主題等)

瀏覽器行為跟蹤(如跟蹤分析使用者行為等)

什麼是 sessionsession 代表著伺服器和客戶端一次會話的過程。session 物件儲存特定使用者會話所需的屬性及配置資訊。這樣,當使用者在應用程式的 web 頁之間跳轉時,儲存在 session 物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當客戶端關閉會話,或者 session 超時失效時會話結束。

cookie 和 session 有什麼不同?

作用範圍不同,cookie 儲存在客戶端(瀏覽器),session 儲存在伺服器端。

訪問方式的不同,cookie 只能儲存 ascii,session 可以存任意資料型別,一般情況下我們可以在 session 中保持一些常用變數資訊,比如說 userid 等。

有效期不同,cookie 可設定為長時間保持,比如我們經常使用的預設登入功能,session 一般失效時間較短,客戶端關閉或者 session 超時都會失效。

隱私策略不同,cookie 儲存在客戶端,比較容易遭到不法獲取,早期有人將使用者的登入名和密碼儲存在 cookie 中導致資訊被竊取;session 儲存在服務端,安全性相對 cookie 要好一些。

儲存大小不同, 單個 cookie 儲存的資料不能超過 4k,session 可儲存資料遠高於 cookie。

為什麼需要 cookie 和 session,他們有什麼關聯?

那麼 cookie 和 session 是如何配合的呢?我畫了一張圖大家可以先了解下。

既然服務端是根據 cookie 中的資訊判斷使用者是否登入,那麼如果瀏覽器中禁止了 cookie,如何保障整個機制的正常運轉。

每次請求中都攜帶乙個 sessionid 的引數,也可以 post 的方式提交,也可以在請求的位址後面拼接 ***?sessionid=123456…。

token 的意思是「令牌」,是服務端生成的一串字串,作為客戶端進行請求的乙個標識。token 機制和 cookie 和 session 的使用機制比較類似。

當使用者第一次登入後,伺服器根據提交的使用者資訊生成乙個 token,響應時將 token 返回給客戶端,以後客戶端只需帶上這個 token 前來請求資料即可,無需再次登入驗證。

如何考慮分布式 session 問題?

在網際網路公司為了可以支撐更大的流量,後端往往需要多台伺服器共同來支撐前端使用者請求,那如果使用者在 a 伺服器登入了,第二次請求跑到服務 b 就會出現登入失效問題。

分布式 session 一般會有以下幾種解決方案:

nginx ip_hash 策略,服務端使用 nginx **,每個請求按訪問 ip 的 hash 分配,這樣來自同一 ip 固定訪問乙個後台伺服器,避免了在伺服器 a 建立 session,第二次分發到伺服器 b 的現象。

session 複製,任何乙個伺服器上的 session 發生改變(增刪改),該節點會把這個 session 的所有內容序列化,然後廣播給所有其它節點。

共享 session,服務端無狀態話,將使用者的 session 等資訊使用快取中介軟體來統一管理,保障分發到每乙個伺服器的響應結果都一致。

建議採用第三種方案。

COOKIE和SESSION有什麼區別?

1,session 在伺服器端,cookie 在客戶端 瀏覽器 2,session 預設被存在在伺服器的乙個檔案裡 不是記憶體 3,session 的執行依賴 session id,而 session id 是存在 cookie 中的,也就是說,如果瀏覽器禁用了 cookie 同時 session ...

cookie和session和token是什麼?

什麼是session?什麼是cookie?什麼是token?1 cookie?由於http是一種無狀態協議,伺服器沒有辦法單單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie cookie實際上是一小段的4k文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用re...

Session和Cookie的區別

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