Http協議中Cookie詳細介紹

2022-09-18 22:15:21 字數 2082 閱讀 5590

cookie總是儲存在客戶端中,按在客戶端中的儲存位置,可分為記憶體cookie和硬碟cookie。記憶體cookie由瀏覽器維護,儲存在記憶體中,瀏覽器關閉後就消失了,其存在時間是短暫的。硬碟cookie儲存在硬碟裡,有乙個過期時間,除非...      

cookie總是儲存在客戶端中,按在客戶端中的儲存位置,可分為記憶體cookie和硬碟cookie。記憶體cookie由瀏覽器維護,儲存在記憶體中,瀏覽器關閉後就消失了,其存在時間是短暫的。硬碟cookie儲存在硬碟裡,有乙個過期時間,除非使用者手工清理或到了過期時間,硬碟cookie不會被刪除,其存在時間是長期的。所以,按存在時間,可分為非持久cookie和持久cookie。

1.cookie的屬性

一般cookie所具有的屬性,包括:

domain:域,表示當前cookie所屬於哪個域或子域下面。

此處需要額外注意的是,在c#中,如果乙個cookie不設定對應的domain,那麼在cookiecontainer.add(cookies)的時候,會死掉。對於伺服器返回的set-cookie中,如果沒有指定domain的值,那麼其domain的值是預設為當前所提交的http的請求所對應的主網域名稱的。比如訪問 返回乙個cookie,沒有指名domain值,那麼其為值為預設的www.example.com。

path:表示cookie的所屬路徑。

expire time/max-age:表示了cookie的有效期。expire的值,是乙個時間,過了這個時間,該cookie就失效了。或者是用max-age指定當前cookie是在多長時間之後而失效。如果伺服器返回的乙個cookie,沒有指定其expire time,那麼表明此cookie有效期只是當前的session,即是session cookie,當前session會話結束後,就過期了。對應的,當關閉(瀏覽器中)該頁面的時候,此cookie就應該被瀏覽器所刪除了。

secure:表示該cookie只能用https傳輸。一般用於包含認證資訊的cookie,要求傳輸此cookie的時候,必須用https傳輸。

httponly:表示此cookie必須用於http或https傳輸。這意味著,瀏覽器指令碼,比如j**ascript中,是不允許訪問操作此cookie的。

2.伺服器傳送cookie給客戶端

從伺服器端,傳送cookie給客戶端,是對應的set-cookie。包括了對應的cookie的名稱,值,以及各個屬性。

例如:set-cookie: lu=rg3vhjznehyljvg7qi3bzjzg; expires=tue, 15 jan 2013 21:47:38 gmt; path=/; domain=.169it.com; httponly

3.從客戶端把cookie傳送到伺服器

從客戶端傳送cookie給伺服器的時候,是不傳送cookie的各個屬性的,而只是傳送對應的名稱和值。

例如:get /spec.html http/1.1  

host: www.example.org  

cookie: name=value; name2=value2  

accept: */*  

4.關於修改,設定cookie

除了伺服器傳送給客戶端(瀏覽器)的時候,通過set-cookie,建立或更新對應的cookie之外,還可以通過瀏覽器內建的一些指令碼,比如j**ascript,去設定對應的cookie,對應實現是操作js中的document.cookie。

5.cookie的缺陷

(1)cookie會被附加在每個http請求中,所以無形中增加了流量。

(2)由於在http請求中的cookie是明文傳遞的,所以安全性成問題。(除非用https)

(3)cookie的大小限制在4kb左右。對於複雜的儲存需求來說是不夠用的。

HTTP 協議中的 cookie

cookie 是儲存在瀏覽器某個檔案中的一段key value字串 服務端下發響應時,可以在響應頭加上set cookie key value,告訴瀏覽器,需要儲存哪些cookie 瀏覽器在傳送請求時,會將此域下的所有cookie字串,放在http請求header中的cookie欄位中,隨請求傳送給...

HTTP協議中Cookie徹底解讀

cookie總是儲存在客戶端中,按在客戶端中的儲存位置,可分為記憶體cookie和硬碟cookie。記憶體cookie由瀏覽器維護,儲存在記憶體中,瀏覽器關閉後就消失了,其存在時間是短暫的。硬碟cookie儲存在硬碟裡,有乙個過期時間,除非使用者手工清理或到了過期時間,硬碟cookie不會被刪除,其...

詳細的HTTP協議講解

概念 http協議 hypertext transfer protocol,超文字傳輸協議 是用於從www伺服器傳輸超文字到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文字文件,還確定傳輸文件中的哪一部分,以及哪部分內容首先顯示 如文字先於圖形 等。...