session與cookie的區別

2021-08-11 15:29:34 字數 2151 閱讀 8873

1.什麼是cookie

cookie實際上是一小段的文字資訊儲存在客戶端。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端瀏覽器頒發乙個cookie。客戶端會把cookie儲存起來。

當瀏覽器再請求該**時,瀏覽器把請求的**連同該cookie一同提交給伺服器。伺服器檢查該cookie,以此來辨認使用者狀態。伺服器還可以根據需要修改cookie的內容。

1、會話cookie和持久cookie

若不設定過期時間,則表示這個cookie的生命期為瀏覽器會話期間,關閉瀏覽器視窗,cookie就消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。會話cookie一般不儲存在

硬碟上而是儲存在記憶體裡,當然這種行為並不是規範規定的。

若設定了過期時間,瀏覽器就會把cookie儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效直到超過設定的過期時間。儲存在硬碟上的cookie可以在瀏覽器的不同程序間共享。

這種稱為持久cookie。 

2、cookie具有不可跨網域名稱性

2.什麼是session

session是另一種記錄客戶狀態的機制,不同的是cookie儲存在客戶端瀏覽器中,當瀏覽器 第一次傳送請求時,伺服器自動生成了乙個session和乙個session id用來唯一標識這個session,並將其通過響應傳送到瀏覽器用cookie儲存。當瀏覽器第二次傳送請求,會將前一次伺服器響應中的session id放在請求中一併發送到伺服器上,伺服器從請求中提取出session id,並和儲存的所有session id進行對比,從而找到這個使用者對應的session,如果沒有找到就再建立乙個新的session和sessionid。

1、session的建立:

當程式需要為某個客戶端的請求建立乙個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了sessionid,如果已包含則說明以前已經為此客戶端建立過session,服務

器就按照sessionid把這個session檢索出來使用(檢索不到,會新建乙個),如果客戶端請求不包含sessionid,則為此客戶端建立乙個session並且生成乙個與此session相關

聯的sessionid,sessionid的值是乙個既不會重複,又不容易被找到規律以仿造的字串,這個sessionid將被在本次響應中返回給客戶端儲存。

2、禁用cookie:

如果客戶端禁用了cookie,通常有兩種方法實現session而不依賴cookie。

1)url重寫:就是把sessionid直接附加在url路徑的後面。

2)表單隱藏字段:就是伺服器會自動修改表單,新增乙個隱藏字段,以便在表單提交時能夠把session id傳遞歸伺服器。比如: 

3.session與cookie特性的總結

cookie儲存在客戶端、session儲存在伺服器端。

session依賴於cookie

session一直儲存在伺服器記憶體中。當瀏覽器不變時請求的是同乙個session。當瀏覽器關閉時候,再開啟session就會發生變化(

「只要關閉瀏覽器,session就消失了」

),原因:其實關閉瀏覽器前的session並沒有消失,只是在關閉瀏覽器的時候seesionid消失了,再次開啟瀏覽器時無法找到原來的session了,如果把原來的sessionid再發伺服器,還是能找到原來的session。

cookie 當設定cookie不設定生命週期時,儲存在記憶體中,當關閉瀏覽器時cookie被清空。當設定生命週期時候,cookie被儲存在硬碟中。

sessionid 預設通過cookie儲存在瀏覽器的記憶體中,所以關閉瀏覽器,sessionid會消失

當瀏覽器禁用cookie時,通過url重寫,就是把session id直接附加在url路徑的後面。還有一種技術叫做表單隱藏欄位等技術重新將session提交給伺服器。

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

考慮到安全應當使用session。

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

考慮伺服器效能建議使用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中如果...