小記cookie

今天項目提測,暫時還沒有bug,來梳理一下cookie的知識,在58的賬號項目中,cookie使用並不多,但由於涉及票據和http數據交換的相關內容,還是學習一下吧

在HTTP協議的定義中,採用了一種機制來記錄客戶端和服務器端交互的信息,這種機制被稱爲cookie,cookie規範定義了服務器和客戶端交互信息的格式、生存期、使用範圍、安全性。

Cookie在遠程瀏覽器端存儲數據並以此跟蹤和識別用戶的機制。從實現上說,Cookie是存儲在客戶端上的一小段數據,瀏覽器(即客戶端)通過HTTP協議和服務器端進行Cookie交互。

Cooke獨立於語言存在,嚴格地說,Cookie並不是由PHP、Java等語言實現的,而是由這些語言對Cookie進行間接操作,即發送HTTP指令,瀏覽器收到指令便操作Cookie並返回給服務器。因此,Cookie是由瀏覽器實現和管理的。

Cookie是HTTP頭的一部分,即現發送或請求Cookie,纔是data域;setcookie()等函數必須在數據之前調用,這和header() 函數是相同的。不過也可以使用輸出緩衝函數延遲腳本的輸出,知道設置好所有Cookie和其他HTTP標頭。

Cookie中存放的信息包含cookie本身屬性和用戶自定義屬性,一個cookie只能包含一個自定義鍵/值對。Cookie本身屬性有”Comment” 、”Domain”、”Max-Age”、”Path”、”Secure”、”Version”。

Comment 屬性是cookie的產生着對該cookie的描述;

 

Domain 屬性定義可訪問該cookie的域名,對一些大的網站,如果希望cookie可以在子網站中共享,可以使用該屬性。例如設置Domain爲 .bigsite.com ,則sub1.bigsite.com和sub2.bigsite.com都可以訪問已保存在客戶端的cookie,這時還需要將Path設置爲/。

 

Max-Age 屬性定義cookie的有效時間,用秒計數,當超過有效期後,cookie的信息不會從客戶端附加在HTTP消息頭中發送到服務端。

 

Path 屬性定義網站上可以訪問cookie的頁面的路徑,缺省狀態下Path爲產生cookie時的路徑,此時cookie可以被該路徑以及其子路徑下的頁面訪問;可以將Path設置爲/,使cookie可以被網站下所有頁面訪問。

 

Secure 屬性值定義cookie的安全性,當該值爲true時必須是HTTPS狀態下cookie才從客戶端附加在HTTP消息中發送到服務端,在HTTP時cookie是不發送的;Secure爲false時則可在HTTP狀態下傳遞cookie,Secure缺省爲false。

 

Version 屬性定義cookie的版本,由cookie的創建者定義。

 

cookie 有域和路徑這個概念。域就是domain的概念,因爲瀏覽器是個注意安全的環境,所以不同的域之間是不能互相訪問 cookie 的(當然可以通過特殊設置的達到 cookie 跨域訪問)。路徑就是routing的概念,一個網頁所創建的 cookie 只能被與這個網頁在同一目錄或子目錄下得所有網頁訪問,而不能被其他目錄下得網頁訪問

 

Cookie的大小一般限制在4K,但根據具體的瀏覽器不同,Cookie的大小也不盡相同

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