在Windows系統中,cookie通常是被儲存在C:\Documents and settings\使用者名\cookie目錄下(如果系統在C槽)。其實每個cookie實際上就是一個文本檔案,裡面是用來儲存一些字元資料,這些資料是有代碼進行寫入不僅是JavaScript和任何服務端語言;還并能在先前寫入過的資訊以及網頁進行讀取,也就是說當我們在浏覽網頁時,頁面中的JavaScript代碼已經把這些資料寫入我們的電腦。當然這些資訊并不一定永遠存在浏覽者的電腦中,每個Cookie都有自己的存在時間,這就是由代碼進行控制的。
在JavaScript中操作Cookie,隻需新增一個Cookie對文檔對象的Cookie屬性進指派即可, 如:<script> document.cookie = “msg”; </script>
這是很簡單的文檔對象,但你在檔案夾中是無法看見到這個Cookie檔案的,因為他的生命周期是在關閉浏覽器後就會結束 ,是以系統沒有寫入本地硬碟中。這些都是由于Cookie的屬性所決定的。
設定Cookie屬性并不是我們通過“.”來通路的。是經過Cookie的本身有一堆屬性所組成的,這就是他們應用的字元串(數字和應用的代碼)。
以下是常用的一些代碼: <script> //過期時間一分鐘 var expiration = new Date (new Date(),getTime() +1*60000); (這是以代碼的屬性時間來變量指派) document.cookie = "yyy;path=/;expires=" + expiration.toGMTString() </script>
在代碼中含有3個屬性,包括正文、讀取路徑以及過期時件。它們以分号間隔并使用特定的“屬性=值”的格式來表示,出正文部分之外。除了path和expires外,Cookie還有其他一些屬性,JavaScript中的Cookie如圖表:
1.expires 的過期時間用來控制一個Cookie的生命期,也就是它硬碟裡存在的時間。無論是寫入的時間還是指定的過期時間,它們都是來自于客戶機而不是伺服器,因為Cookie是存在于浏覽者計算機上的。是以時間格式必須是标準的GMT格式,如上圖所示;現在以這種在目前時間的基礎上增加指定時間的方式來表達:
//過期時間。D阿特()構造函數接收毫秒機關的參數 var expiration = new date(new Date().gettime() + 1 * 60000);
如果不設定或者設定為早于目前的時間,那麼Cookie将不被寫入硬碟,因為他沒有被儲存 ,這宗特性可以用來删除Cookie檔案.
2.path 的路徑用來指定頁面所能通路Cookie最頂層的目錄,
E:/a.html
E:/sec/b.html
E:/sec/thr/c.html
注意path中的大小寫,如果寫成這樣path=/e:/sec,那麼它就會變成另一個新的Cookie。
比如我們要寫如資訊,姓名、性别、年齡等?不會生成多個Cookie檔案,隻會産生覆寫原來的值。在同一頁面中設定兩次Cookie:
document.cookie ="xxx";
document.cookie ="yyy";
存取多個不同類型值在Cookie中的代碼如:
<script>
//我的姓名、性别、出生年齡 “ 方式一”
document.cookie = "yyy;xxx;zzz;";
//我的工作、出差時間、休息時間 “方式二”
document.cookie = "yyy,xxx,zzz,";
</script>
使用設定“方式一”,系統通過分号來進行屬性的分割。對征文屬性來說,它隻是認第一個值,在代碼中就是yyy,而xxx和zzz則被認為是非法屬性而忽略掉。
使用“方式二”沒有用分号來分割三個值,而是用逗号。系統會認為“yyy,xxx,zzz”是一個整體,都屬于正文屬性。都能被讀取到。
document.cookies = "yyy,xxx,zzz;domain=baidu.com";
現在這個Cookie就可以被百度的所有二級域中的頁面所共享,domain可以和path屬性一起限制Cookie的通路。
4.secure 安全性可以幫助Cookie在傳遞的過程中進行加密。也就是說在本地硬碟中的Cookie是可以被打開看到,代碼如:document.cookie = "yyy,xxx,zzz;secure";
設定安全屬性很簡單,隻需要用分号隔開secure屬性就可以了,但是增加了secure屬性後的Cookie在普通的HTTP協定下再也無法讀取到了,因為它隻是本文轉自huangyouliang10 51CTO部落格,原文連結:http://blog.51cto.com/1572091hyl10/401128