Cookie常用屬性

cookie的介紹

在chrome控制檯中的application選項卡中可以看到cookie的信息。

Cookie是由服務器端生成,瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器。每個cookie除了name名稱和value值這兩個屬性以外,常用屬性還有:expires過期時間、 path路徑、 domain域、以及 secure安全、HttpOnly屬性。

name字段

name字段爲一個cookie的名稱。

value字段

name字段爲一個cookie的值。

expires/Max-Age 字段

爲此cookie超時時間。若設置其值爲一個時間,那麼當到達此時間後,此cookie失效。不設置的話默認值是Session,意思是cookie會和session一起失效。當瀏覽器關閉(不是瀏覽器標籤頁,而是整個瀏覽器) 後,此cookie失效。

1、過期時間,定cookie的生命期。
2、具體是值是過期日期。如果想讓cookie的存在期限超過當前瀏覽器會話時間,就必須使用這個屬性。當過了到期日期時,瀏覽器就可以刪除cookie文件,沒有任何影響。

注意:不設置的話默認值是Session,意思是cookie會和session一起失效**。當瀏覽器關閉(不是瀏覽器標籤頁,而是整個瀏覽器) 後,此cookie失效。(藝龍面試考察)

domain字段

1、域,指定關聯的WEB服務器或域。
2、值是域名。這是對path路徑屬性的一個延伸。如果我們想讓dev.mycompany.com 能夠訪問bbs.mycompany.com設置的cookies,該怎麼辦? 我們可以把domain屬性設置成“mycompany.com”,並把path屬性設置成“/”。不能把cookies**域屬性設置成與設置它的服務器的所在域**不同的值。

以下爲domain的詳細設置規則:
domain字段爲可以訪問此cookie的域名。

非頂級域名,如二級域名或者三級域名,設置的cookie的domain只能爲頂級域名或者二級域名或者三級域名本身,不能設置其他二級域名的cookie,否則cookie無法生成。

頂級域名只能設置domain爲頂級域名,不能設置爲二級域名或者三級域名,否則cookie無法生成。

二級域名能讀取設置了domain爲頂級域名或者自身的cookie,不能讀取其他二級域名domain的cookie。所以要想cookie在多個二級域名中共享,需要設置domain爲頂級域名,這樣就可以在所有二級域名裏面或者到這個cookie的值了。
頂級域名只能獲取到domain設置爲頂級域名的cookie,其他domain設置爲二級域名的無法獲取。

Http字段

cookie的httponly屬性。若此屬性爲true,則只有在http請求頭中會帶有此cookie的信息,而不能通過document.cookie來訪問此cookie。

1、如果在Cookie中設置了”HttpOnly”屬性,那麼通過後臺程序讀取,JS腳本將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊
2、但是設置HttpOnly屬性,Cookie盜竊的威脅並沒有徹底消除,因爲cookie還是有可能傳遞的過程中監聽捕獲後信息泄漏。

Path字段

path字段爲可以訪問此cookie的頁面路徑。 比如domain是abc.com,path是/test,那麼只有/test路徑下的頁面可以讀取此cookie。

1、路徑,指定與cookie關聯的WEB頁。
2、值可以是一個目錄,或者是一個路徑。如果/head/index.html 建立了一個cookie,那麼在/head/目錄裏的所有頁面,以及該目錄下面任何子目錄裏的頁面都可以訪問這個cookie。這就是說,在/head/stories/articles 裏的任何頁面都可以訪問/head/index.html建立的cookie。但是,如果/zdnn/ 需要訪問/head/index.html設置的cookies,該怎麼辦?這時,我們要把cookies的path屬性設置成“/”。在指定路徑的時候,凡是來自同一服務器,URL裏有相同路徑的所有WEB頁面都可以共享cookies。現在看另一個例子:如果想讓 /head/filters/ 和/head/stories/共享cookies,就要把path設成“/head”。

Secure字段

設置是否只能通過https來傳遞此條cookie

1、安全,指定cookie的值通過網絡如何在用戶和WEB服務器之間傳遞。
2、這個屬性的值或者是“secure”,或者爲空。缺省情況下,該屬性爲空,也就是使用不安全的HTTP連接傳遞數據。如果一個 cookie 標記爲secure,那麼,它與WEB服務器之間就通過HTTPS或者其它安全協議傳遞數據。不過,設置了secure屬性不代表其他人不能看到你機器本地保存的cookie。換句話說,把cookie設置爲secure,只保證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的cookie文件並不加密。如果想讓本地cookie也加密,得自己加密數據。

參考:http://www.studyofnet.com/news/1053.html
http://www.cnblogs.com/keyi/p/6823853.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章