自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹JavaScript中的cookie

開發(fā) 前端
Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)。本文詳細(xì)的介紹JavaScript中的cookie,希望對你有幫助。

以前,JavaScript完全不與服務(wù)器進(jìn)行任何交互。它有時(shí)在客戶端進(jìn)行少量操作,然后讓服務(wù)器來完成其他任務(wù)。然而,隨著Web的發(fā)展,也要求JavaScript能向服務(wù)器發(fā)送數(shù)據(jù),接受響應(yīng),在這種需求下就產(chǎn)生兩種與服務(wù)器通信的方法:cookie與HTTP請求。

cookie其實(shí)就是網(wǎng)站放在用戶機(jī)器上的一小塊信息,cookie對于用戶來說是唯一的,網(wǎng)站可判斷用戶上次訪問網(wǎng)站的時(shí)間,以及他訪問了哪些頁面,可用于在某個(gè)網(wǎng)站跟蹤你訪問的頁面,但無法用它來獲取個(gè)人信息。cookie是第一個(gè)JavaScript可以利用的客戶端—服務(wù)器端之間的交互手段。瀏覽器向服務(wù)器發(fā)送請求時(shí),為這個(gè)服務(wù)器存儲(chǔ)的cookie會(huì)與其他信息一起發(fā)送到服務(wù)器。

(一) cookie的組成

1、名稱

每一個(gè)cookie由一個(gè)唯一的名稱代表。這個(gè)名稱可以包含字母、數(shù)字和下劃線。與JavaScript的變量不同,cookie的名稱是不區(qū)分大小寫的。建議將cookie名字認(rèn)為是區(qū)分大小寫的,因?yàn)橛行┓?wù)器端軟件是區(qū)分大小寫的。

2、值

保存在cookie中的字符串值。這個(gè)值在存儲(chǔ)之前必須用encodeURIComponent()對其進(jìn)行編碼,以免丟失了數(shù)據(jù)或占用了cookie。名稱和值加起來的字節(jié)數(shù)不能超過4KB。

3、域

出于安全考慮,網(wǎng)站不能訪問由其他域創(chuàng)建的cookie。創(chuàng)建cookie后,域的信息會(huì)作為cookie的一部分存儲(chǔ)起來。

4、路徑

另一個(gè)cookie的安全特性,路徑限制了對Web服務(wù)器上的特定目錄的訪問。例如,可指定cookie只能從http://www.yiiiyaa.net/category中訪問,這樣就不能訪問http://www.yiiyaa.net/上的網(wǎng)頁了,盡管都在同一個(gè)域中。

5、失效日期

cookie何時(shí)應(yīng)該被刪除。默認(rèn)情況下,關(guān)閉瀏覽器,時(shí)即將cookie刪除;不過,也可以自己設(shè)置刪除時(shí)間。這個(gè)值是GMT格式的日期,用于指定應(yīng)該刪除cookie的準(zhǔn)確時(shí)間。因此,cookie可以瀏覽器關(guān)閉后依然保存在用戶的機(jī)器上。如果你設(shè)置的失效日期是個(gè)以前的時(shí)間,則cookie被立即刪除。

6、安全標(biāo)志

一個(gè)true/false值,用于表示cookie是否只能從安全網(wǎng)站(使用SSL和https協(xié)議的網(wǎng)站)中訪問。可以將這個(gè)值設(shè)置為true以提供加強(qiáng)的保護(hù),進(jìn)而確保cookie不被其他網(wǎng)站訪問。

(二)其他安全限制

為確保cookie不被惡意使用,瀏覽器還對cookie的使用進(jìn)行了一些限制:

1、每個(gè)域最多只能在一臺(tái)用戶的機(jī)器上存儲(chǔ)20個(gè)cookie;

2、每個(gè)cookie的總大小不能超過4096節(jié)點(diǎn);

3、一臺(tái)用戶機(jī)器上的cookie的總數(shù)不能超過300個(gè)。
另外,一些新的瀏覽器還對cookie進(jìn)行了嚴(yán)格控制,可以讓用戶阻止所有的cookie、阻止某些未知的網(wǎng)站的cookie或者在創(chuàng)建cookie時(shí)進(jìn)行提示。

(三) JavaScript中的cookie

document對象有cookie特性,是包含所有給定頁面可訪問的cookie的字符串。cookie特性也很特別,因?yàn)閷⑦@個(gè)cookie特性設(shè)置為新值只會(huì)改變對頁面可訪問的cookie,并不會(huì)真正改變cookie(特性)本身。

要?jiǎng)?chuàng)建一個(gè)cookie,必須按照下面的格式創(chuàng)建字符串:

  1. cookie_name=cookie_value;   
  2. expires=expiration_time;   
  3. path=domain_path;   
  4. domain=domain_name;  

secure只有字符串的第一部分(指定名稱和值的字符串)是對設(shè)置cookie必需的,其他部分都是可選的,然后將這個(gè)字符串復(fù)制給document.cookie特性,即可創(chuàng)建cookie。讀取document.cookie的值即可訪問這些cookie,以及所有其他可以從給定頁面訪問的cookie。

因?yàn)閯?chuàng)建和讀取cookie均需記住它的格式,大部分開發(fā)人員用函數(shù)用處理這些細(xì)節(jié)。創(chuàng)建cookie的函數(shù)很簡單。

  1. function setCookie(sName,sValue,oExpires,sPath,sDomain,bSecure){  
  2. var sCookie=sName+”=”+encodeURIComponent(sValue);  
  3. if(oExpires){  
  4. sCookie+=”; expires=”+oExpires.toGMTString();  
  5. }  
  6. if(sPath){  
  7. sCookie+=”; path=”+sPath;  
  8. }  
  9. if(sDomain){  
  10. sCookie+=”; domain=”+sDomain;  
  11. }  
  12. if(bSecure){  
  13. sCookie+=”; secure”;  
  14. }  
  15. document.cookie=sCookie;  

這個(gè)函數(shù)可以根據(jù)傳入的參數(shù)建立cookie字符串。因?yàn)橹挥星皟蓚€(gè)參數(shù)是必需的。所以函數(shù)在把參數(shù)傳給cookie字符串前,要對參數(shù)進(jìn)行檢測,以確保前兩個(gè)參數(shù)是存在的。

下一個(gè)函數(shù)getCookie(),通過傳入的名稱獲取cookie的值:

  1. function getCookie(sName){  
  2. var sRE=”(?:; )?”+sName+”=([^;]*);?”;  
  3. var oRE=new RegExp(sRE);  
  4. if(oRE.test(document.cookie)){  
  5. return decodeURIComponent(RegExp[“$1”]);  
  6. }else{  
  7. return null;  
  8. }  

這個(gè)函數(shù)使用了通過cookie名稱建立的正則表達(dá)式。由于cookie字符串的格式,正則表達(dá)式是從document.cookie中抽取特定值最方便的方法。如果只有一個(gè)cookie,字符串就只有一個(gè)名稱和值,而值就是等于號后面的所有字符,如果后面還有cookie,則用分號進(jìn)行分隔,也就是說cookie的值包含等于號之后,分號之前的所有字符串。

最后一個(gè)函數(shù)deleteCookie(),用于從系統(tǒng)中立即刪除一個(gè)cookie。將cookie的失效時(shí)間設(shè)置為過去的一個(gè)時(shí)間即可實(shí)現(xiàn)。

  1. function deleteCookie(sName,sPath,sDomain)  
  2. {  
  3. setCookie(sName,””,new Date(0),sPath,sDomain);  

有了以上這些函數(shù),就可以很方便的地設(shè)置、讀取、設(shè)置cookie了。

本文地址:http://www.yiiyaa.net/

【編輯推薦】

  1. jsp開發(fā)技術(shù)應(yīng)用的29個(gè)注意事項(xiàng)
  2. JSP虛擬主機(jī)使用中的亂碼問題
  3. JS跨域設(shè)置和取Cookie
  4. Jackson框架輕易轉(zhuǎn)換JSON
  5. JSP頁面的五種跳轉(zhuǎn)方法
責(zé)任編輯:于鐵 來源: 意雅
相關(guān)推薦

2009-06-17 16:01:28

2011-07-08 16:54:39

JspCookies

2011-07-13 15:47:18

MFC

2011-07-08 11:19:51

jspaction

2011-07-11 15:02:54

枚舉

2011-07-21 15:44:33

Java內(nèi)部類

2011-07-20 15:58:53

C++引用

2011-06-08 16:05:34

VB數(shù)組

2011-07-11 11:02:12

JAVA集合框架

2009-07-30 13:33:55

ASP.NET中的co

2010-01-05 16:18:17

學(xué)習(xí)JavaScrip

2011-06-08 15:45:41

字符串JAVA

2010-03-18 15:47:07

Java創(chuàng)建線程

2010-03-10 19:25:04

python多線程

2011-07-04 10:32:37

JAVA

2011-07-22 16:50:05

JAVA

2011-07-14 11:08:30

C#繼承

2011-06-15 15:16:54

Session

2016-09-13 21:30:11

JavascriptCSPWeb

2010-03-16 13:04:17

Python環(huán)境
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號