cookie 和session 的區別

2021-09-08 04:06:12 字數 1791 閱讀 4877

大部分的瀏覽器現在都有cookies和session的功能,每次在輸入登入名和密碼,或者是某種操作的時候都會有cookie提醒,所以就想看看弄清它們的作用和區別,看完以後發現session和cookies其實是乙個非常頭疼的問題。

在程式中,會話跟蹤是很重要的事情。理論上,乙個客戶的所有請求操作都該屬於同乙個會話。而另乙個會話的請求屬於另乙個會話,得單獨分開,不能產生混亂。例如我平時用的比較多的乙個軟體咕咚。乙個人去過的餐館,城市,工作地點就應該放在該人的行動路線中,無論他是什麼時候去的,這都是乙個人的行動路徑,不能說是別人的。但是web都是使用http協議來傳輸資料的。http是無狀態的協議,一旦資料交換完畢,客戶端與伺服器端的連線就會關閉,再次交換資料需要建立新的連線,這意味著伺服器無法從連線上跟蹤會話。當乙個人運動完以後就有他的運動路徑以及資料,如果沒有跟蹤會話,幾天以後他可能就不知道這條運動記錄到底是誰的了?要跟蹤該會話就的有乙個機制。

說它簡單是因為他們都是http協議的乙個配置項,通過擴充套件http協議來實現的,在servlet規範中也只是對應的乙個類而已。session和cookie的作用都是為了保持訪問使用者與後端伺服器的互動狀態。他們有各自的優點也有各自的缺點,然而具有諷刺意義的是他們的優點和他們使用的場景又都是矛盾的。

session機制:session是一種伺服器端的機制,伺服器使用一種類似於雜湊表的結構。用類似的結構來儲存資訊,相應的增加了伺服器的儲存壓力。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上,這就是session,客戶端在次訪問的時候只需要在session中查詢就可以了。如果cookie機制使通過檢查客戶身上的「通行證」來確定客戶身份的話,那麼session機制就是通過檢查伺服器端的「客戶明細」來確認身份。session相當於程式在伺服器上建立的乙份客戶檔案(在我們註冊的時候)。當程式需要為某個客戶的請求建立乙個session時,伺服器首先檢查這個客戶端的請求裡是否包含了乙個session標誌(session id),如果已包含則說明以前為該客戶建立過session,伺服器按照sessionid把這個session檢索出來,使用,如果檢索不到會新建乙個session並且生成乙個與此session相關聯的sessionid,session是乙個既不會重複,又不容易找到規律易仿造的字串,這個session id將被在本次響應中返回給客戶端儲存。儲存這個sessionid的方式採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標示傳送給伺服器。一般cookie的名字都類似與session id。但是cookie可以被人為的禁止,則必須保證有其他機制使cookie禁止以後,任然能把session傳遞給伺服器。

總結:cookie 和 session 都是為了保持使用者訪問的連續狀態,之所以要保持這種狀態,一方面是為了方便業務實現,另一方面就是簡化服務端程式設計,提高訪問效能,但是這也帶來了另外一些挑戰,如安全問題、應用的分布式部署帶來的 session 的同步問題及跨網域名稱 session 的同步等一系列問題。本章簡單的分析了 cookie 和 session 的工作原理,簡單的解決了兩個關鍵的問題。

總體區別:

(1)、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上(但是其實現也是基於cookie)。

(2)、cookie如果數量過多,會增減客戶端與伺服器之間的資料傳輸壓力。(所以單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie)

(3)、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙。 考慮到安全,像登入關鍵資訊密碼應當使用session。

(4)、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的儲存效能,考慮到減輕伺服器效能方面,應當使用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機制採用的是在伺服器端保持狀態的方案。同時我...