在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
換了在a.html中設定了path=/,那我們根據根的目錄所得a.html、b.html和c.html都可以通過document.cookie來讀取裡面的資訊,如果沒設定path=/E:/sec,那麼只有b.html和c.html能夠讀取到Cookie。(注意:上面的程式碼在IE中無法執行,只能通過file:///協議在FF或在Opera等瀏覽器中執行,主要是由於對Cookie本地路徑的問題。如果是使用IE進行不同的路徑的測試,則必須在伺服器端建立服務和訪問。
注意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”是一個整體,都屬於正文屬性。都能被讀取到。
3.domain域名用來限定可以訪問Cookie的地域名地址。很多網站除了主域名外還會有很多二級域名,例如百度有www.baidu.com、hi.baidu.com、mp3.baidu.com、map.baidu.com 等,通過系統為了安全考慮,只允許每個域訪問自己建立的Cookie,如果是多個的域共享Cookie資訊,就必須更改Cookie的domain屬性了。如程式碼:
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協議下再也無法讀取到了,因為它只是識別到HTTPS。(注意:HTTPS是HTTP的增強版本,也就是使用了SSL的HTTP。從而使用過的SSL便可以對傳輸的資訊進行加密)
相關文章
- JavaScript操作cookie與localStorageJavaScriptCookie
- 【Javascript】——簡單cookie操作JavaScriptCookie
- Cookie介紹及JavaScript操作Cookie方法詳解CookieJavaScript
- javascript操作cookie程式碼封裝JavaScriptCookie封裝
- javascript操作cookie簡單外掛JavaScriptCookie
- java中cookie操作詳細JavaCookie
- javascript讀寫cookie操作簡單介紹JavaScriptCookie
- 操作cookieCookie
- javascript cookieJavaScriptCookie
- Java操作Cookie之新增CookieJavaCookie
- js cookie操作JSCookie
- js操作cookieJSCookie
- JavaScript 建立CookieJavaScriptCookie
- 操作cookie外掛jquery.cookie用法CookiejQuery
- JavaScript中 |、& 、!!操作符JavaScript
- javascript中Array的操作JavaScript
- Flask(11)- 操作 CookieFlaskCookie
- JavaScript 讀取cookieJavaScriptCookie
- JavaScript 刪除cookieJavaScriptCookie
- JavaScript cookie 跨域JavaScriptCookie跨域
- php在yii2中的cookie用法PHPCookie
- JavaScript 中的操作符JavaScript
- Cookie的相關操作Cookie
- Django(33)Django操作cookieDjangoCookie
- laravel操作session和cookieLaravelSessionCookie
- java對cookie的操作JavaCookie
- JS 操作Cookie詳解JSCookie
- JavaScript 複習之 CookieJavaScriptCookie
- 『政善治』Postman工具 — 11、Postman中對Cookie的操作PostmanCookie
- 『政善治』Postman工具 — 10、Postman中對Cookie的操作PostmanCookie
- 關於ASP.NET/C#中對Cookie的操作ASP.NETC#Cookie
- 在JavaScript中借用方法JavaScript
- 在 JavaScript 中掌握日期JavaScript
- javascript中!=、!==、==、===操作符總結JavaScript
- JavaScript中對陣列的操作JavaScript陣列
- Cookie 詳解以及實現一個 cookie 操作庫Cookie
- 封裝操作cookie的方法封裝Cookie
- cookie操作簡單實現Cookie