天天看點

在JavaScript中操作Cookie

 在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

繼續閱讀