cookie 與session的區別

2021-09-29 05:03:25 字數 1680 閱讀 5847

由於http協議是無狀態的,在web系統中,怎麼識別請求來自於**呢?是哪乙個使用者發起的請求呢?

為了解決這乙個問題,http協議引入了cookie和session這兩個 概念。

cookie是什麼呢?

cookie是伺服器傳遞到瀏覽器,儲存在瀏覽器中的資料,然後瀏覽器每次請求都帶上cookie,這樣就可以標識用哪乙個使用者發起的請求, 比如說把使用者登入的使用者名稱和密碼儲存在cookie中, 只要cookie沒有過期,以後使用者每次登入都可以自動登入了,不需要再次輸入使用者名稱和密碼, 因為瀏覽器在發起請求的時候已經把cookie中的使用者名稱和密碼傳遞給伺服器了。

測試人員肯定經常聽到開發對你說,我這邊都是可以的,你清理一下你的瀏覽器的快取,肯定就可以了,結果。。。有時候還是不行

session是什麼呢?

session把使用者的資訊儲存在伺服器上面, 瀏覽器第一次訪問的時候伺服器把sessionid傳遞到瀏覽器,然後瀏覽器把session_id儲存在cookie中, 每次訪問把session_id帶上,伺服器就可以標識這個請求來自於那個使用者,然後根據session_id查這個這個使用者的seesion裡面記錄了哪些資料。

會話cookie一般不儲存在硬碟上而是儲存在記憶體裡,當然這種行為並不是規範規定的。若設定了過期時間,瀏覽器就會把cookie儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效直到超過設定的過期時間。儲存在硬碟上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie視窗。而對於儲存在記憶體裡的cookie,不同的瀏覽器有不同的處理方式session機制。session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表的結構(也可能就是使用雜湊表)來儲存資訊。

當程式需要為某個客戶端的請求建立乙個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識(稱為session id),如果已包含則說明以前已經為此客戶端建立過session,伺服器就按照session id把這個session檢索出來使用(檢索不到,會新建乙個),如果客戶端請求不包含session id,則為此客戶端建立乙個session並且生成乙個與此session相關聯的session id,這個session id將被在本次響應中返回給客戶端儲存。儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識傳送給伺服器。一般這個cookie的名字都是類似於seeesionid。但cookie可以被人為的禁止,所以必須有其他機制以便在cookie被禁止時仍然能夠把session id傳遞歸伺服器。其中一種技術叫做url重寫,就是把session id直接附加在url路徑的後面。還有一種技術叫做表單隱藏字段。就是伺服器會自動修改表單,新增乙個隱藏字段,以便在表單提交時能夠把session id傳遞歸伺服器。

cookie 和session 的比較:

(1)都是為了用來記錄使用者狀態。

(2)cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

(3)cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙。

(4)session會在一定時間內儲存在伺服器上。當訪問增多,對伺服器產生較大壓力。

(5)單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。

(6)所以一般做法是:將登入資訊等重要資訊存放為session,其他需要保留的資訊放在cookie中。

cookie與session的關聯

前提 cookie沒有被禁用。當用瀏覽器登入到某 伺服器時,先找對應的cookie檔案,當首次訪問是當然沒有cookie檔案,所以在請求頭部中沒有cookie的內容,即在請求頭部中沒有類似cookie jsessionid 的內容,這時當請求到達伺服器後,伺服器看請求頭中沒有jsessionid值,...

session與cookie的區別

讓我們用幾個例子來描述一下cookie和session機制之間的區別與聯絡。筆者曾經常去的一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。想象一下其實也無外乎下面的幾種方案 1 該店的店員很厲害,能記住每位顧客的消費數量,...

session與cookie的區別

1 session儲存在伺服器,客戶端不知道其中的資訊 cookie儲存在客戶端,伺服器能夠知道其中的資訊。2 session中儲存的是物件,cookie中儲存的是字串。3 session不能區分路徑,同乙個使用者在訪問乙個 期間,所有的session在任何乙個地方都可以訪問到。而cookie中如果...