網頁Cookie的構成以及相關屬性分析
更新時間:2012-01-19 | 發布人:本站 | 點擊率:1075 次
Cookies最初設計時,是為了CGI編程。但是,我們也可以使用Javascript腳本來操縱cookies。在本文里,我們將演示如何使用Javascript腳本來操縱cookies。(如果有需求,我可能會在以后的文章里介紹如何使用Perl進行cookie管理。但是如果實在等不得,那么我現在就教你一手:仔細看看CGI.pm。在這個CGI包里有一個cookie()函數,可以用它建立cookie。但是,還是讓我們先來介紹cookies的本質。
在Javascript腳本里,一個cookie 實際就是一個字符串屬性。當你讀取cookie的值時,就得到一個字符串,里面當前WEB頁使用的所有cookies的名稱和值。每個cookie除了name名稱和value值這兩個屬性以外,還有四個屬性。這些屬性是: expires過期時間、 path路徑、 domain域、以及 secure安全。
Expires – 過期時間。指定cookie的生命期。具體是值是過期日期。如果想讓cookie的存在期限超過當前瀏覽器會話時間,就必須使用這個屬性。當過了到期日期時,瀏覽器就可以刪除cookie文件,沒有任何影響。
Path – 路徑。指定與cookie關聯的WEB頁。值可以是一個目錄,或者是一個路徑。如果/head/index.html 建立了一個cookie,那么在/head/目錄里的所有頁面,以及該目錄下面任何子目錄里的頁面都可以訪問這個cookie。這就是說,在/head/stories/articles 里的任何頁面都可以訪問/head/index.html建立的cookie。但是,如果/zdnn/ 需要訪問/head/index.html設置的cookes,該怎么辦?這時,我們要把cookies的path屬性設置成“/”。在指定路徑的時候,凡是來自同一服務器,URL里有相同路徑的所有WEB頁面都可以共享cookies。現在看另一個例子:如果想讓 /head/filters/ 和/head/stories/共享cookies,就要把path設成“/head”。
Domain – 域。指定關聯的WEB服務器或域。值是域名,比如goaler.com。這是對path路徑屬性的一個延伸。如果我們想讓dev.mycompany.com 能夠訪問bbs.mycompany.com設置的cookies,該怎么辦? 我們可以把domain屬性設置成“mycompany.com”,并把path屬性設置成“/”。FYI:不能把cookies域屬性設置成與設置它的服務器的所在域不同的值。
Secure – 安全。指定cookie的值通過網絡如何在用戶和WEB服務器之間傳遞。這個屬性的值或者是“secure”,或者為空。缺省情況下,該屬性為空,也就是使用不安全的HTTP連接傳遞數據。如果一個 cookie 標記為secure,那么,它與WEB服務器之間就通過HTTPS或者其它安全協議傳遞數據。不過,設置了secure屬性不代表其他人不能看到你機器本地保存的cookie。換句話說,把cookie設置為secure,只保證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的cookie文件并不加密。如果想讓本地cookie也加密,得自己加密數據。