用Servlet和JS操作Cookie

在服務端操作Cookie ,以一個Servlet的doGet方法做例子

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 移除名字爲"jsCookie"的Cookie
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {
			for (int i = 0; i < cookies.length; i++) {
				if (cookies[i].getName().equals("jsCookie")) {
					// 把生命週期置爲0即表示殺掉這個Cookie
					cookies[i].setMaxAge(0);
					// 一定要再次將已經殺掉的Cookie放入Response裏
					response.addCookie(cookies[i]);
				}
				// 打印所有Cookie
				System.out.println(cookies[i].getName() + ":" + cookies[i].getValue());
			}
		}
		// 增加或更新Cookie
		response.addCookie(new Cookie("CurrentTime", new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())));
		response.sendRedirect("index.jsp");
	}

在瀏覽器用JS操作Cookie

本來想自己寫的,可是別人寫的已經非常非常非常完美了,我就抄過來的了。

以下內容摘抄自:http://www.yongfa365.com/item/59705178b6eb0a35.html

cookie概述
在上一節,曾經利用一個不變的框架來存儲購物欄數據,而商品顯示頁面是不斷變化的,儘管 這樣能達到一個模擬全局變量的功能,但並不嚴謹。例如在導航框架頁面內右擊,單擊快捷菜單中的【刷新】命令,則所有的JavaScript變量都會丟失。 因此,要實現嚴格的跨頁面全局變量,這種方式是不行的,JavaScript中的另一個機制:cookie,則可以達到真正全局變量的要求。
cookie是瀏覽器提供的一種機制,它將document對象的cookie屬性提供給JavaScript。可以由JavaScript對其進行控 制,而並不是JavaScript本身的性質。cookie是存於用戶硬盤的一個文件,這個文件通常對應於一個域名,當瀏覽器再次訪問這個域名時,便使這 個cookie可用。因此,cookie可以跨越一個域名下的多個網頁,但不能跨越多個域名使用。
不同的瀏覽器對cookie的實現也不一樣,但其性質是相同的。例如在Windows 2000以及Windows xp中,cookie文件存儲於documents and settings\userName\cookie\文件夾下。通常的命名格式爲:
[email protected]
cookie機制將信息存儲於用戶硬盤,因此可以作爲全局變量,這是它最大的一個優點。它可以用於以下幾種場合。
? 保存用戶登錄狀態。例如將用戶id存儲於一個cookie內,這樣當用戶下次訪問該頁面時就不需要重新登錄了,現在很多論壇和社區都提供這樣的功能。 cookie還可以設置過期時間,當超過時間期限後,cookie就會自動消失。因此,系統往往可以提示用戶保持登錄狀態的時間:常見選項有一個月、三個 月、一年等。
? 跟蹤用戶行爲。例如一個天氣預報網站,能夠根據用戶選擇的地區顯示當地的天氣情況。如果每次都需要選擇所在地是煩瑣的,當利用了cookie後就會顯 得很人性化了,系統能夠記住上一次訪問的地區,當下次再打開該頁面時,它就會自動顯示上次用戶所在地區的天氣情況。因爲一切都是在後臺完成,所以這樣的頁 面就像爲某個用戶所定製的一樣,使用起來非常方便。
? 定製頁面。如果網站提供了換膚或更換佈局的功能,那麼可以使用cookie來記錄用戶的選項,例如:背景色、分辨率等。當用戶下次訪問時,仍然可以保存上一次訪問的界面風格。
? 創建購物車。正如在前面的例子中使用cookie來記錄用戶需要購買的商品一樣,在結賬的時候可以統一提交。例如淘寶網就使用cookie記錄了用戶曾經瀏覽過的商品,方便隨時進行比較。
當然,上述應用僅僅是cookie能完成的部分應用,還有更多的功能需要全局變量。cookie的缺點主要集中於安全性和隱私保護。主要包括以下幾種:
? cookie可能被禁用。當用戶非常注重個人隱私保護時,他很可能禁用瀏覽器的cookie功能;
? cookie是與瀏覽器相關的。這意味着即使訪問的是同一個頁面,不同瀏覽器之間所保存的cookie也是不能互相訪問的;
? cookie可能被刪除。因爲每個cookie都是硬盤上的一個文件,因此很有可能被用戶刪除;
? cookie安全性不夠高。所有的cookie都是以純文本的形式記錄於文件中,因此如果要保存用戶名密碼等信息時,最好事先經過加密處理。

設置cookie
每個cookie都是一個名/值對,可以把下面這樣一個字符串賦值給document.cookie
document.cookie="userId=828";
如果要一次存儲多個名/值對,可以使用分號加空格(; )隔開 ,例如:
document.cookie="userId=828; userName=hulk";
在cookie的名或值中不能使用分號(;)、逗號(,)、等號(=)以及空格 。在cookie的名中做到這點很容易,但要保存的值是不確定的。如何來存 儲這些值呢?方法是用escape()函數進行編碼 ,它能將一些特殊符號使用十六進制表示,例如空格將會編碼爲“20%”,從而可以存儲於cookie值 中,而且使用此種方案還可以避免中文亂碼的出現。例如:
document.cookie="str="+escape("I love ajax");
相當於:
document.cookie="str=I%20love%20ajax";
當使用escape()編碼後,在取出值以後需要使用unescape()進行解碼才能得到原來的cookie值 ,這在前面已經介紹過。
儘管document.cookie看上去就像一個屬性,可以賦不同的值。但它和一般的屬性不一樣,改變它的賦值並不意味着丟失原來的值 ,例如連續執行下面兩條語句:
document.cookie="userId=828";
document.cookie="userName=hulk";
這時瀏覽器將維護兩個cookie,分別是userId和userName,因此給document.cookie賦值更像執行類似這樣的語句:
document.addcookie("userId=828");
document.addcookie("userName=hulk");
事實上,瀏覽器就是按照這樣的方式來設置cookie的,如果要改變一個cookie的值,只需重新賦值 ,例如:
document.cookie="userId=929";
這樣就將名爲userId的cookie值設置爲了929。

獲取cookie的值
下面介紹如何獲取cookie的值。cookie的值可以由document.cookie直接獲得:
var strcookie=document.cookie;
這將獲得以分號隔開的多個名/值對所組成的字符串,這些名/值對包括了該域名下的所有cookie。例如:
<script language="JavaScript" type="text/JavaScript">
<!--
document.cookie="userId=828";
document.cookie="userName=hulk";
var strcookie=document.cookie;
alert(strcookie);
//-->
</script>
圖7.1顯示了輸出的cookie值。由此可見,只能夠一次獲取所有的cookie值,而不能指定cookie名稱來獲得指定的值,這正是處理 cookie值最麻煩的一部分。用戶必須自己分析這個字符串,來獲取指定的cookie值,例如,要獲取userId的值,可以這樣實現:
<script language="JavaScript" type="text/JavaScript">
<!--
//設置兩個cookie
document.cookie="userId=828";
document.cookie="userName=hulk";
//獲取cookie字符串
var strcookie=document.cookie;
//將多cookie切割爲多個名/值對
var arrcookie=strcookie.split("; ");
var userId;
//遍歷cookie數組,處理每個cookie對
for(var i=0;i<arrcookie.length;i++){
      var arr=arrcookie[i].split("=");
      if("userId"==arr[0]){
             userId=arr[1];
             break;
      }
}

alert(userId);
//-->
</script>
這樣就得到了單個cookie的值

用類似的方法,可以獲取一個或多個cookie的值,其主要的技巧仍然是字符串和數組的相關操作。

給cookie設置終止日期
到現在爲止,所有的cookie都是單會話cookie,即瀏覽器關閉後這些cookie將會丟失,事實上這些cookie僅僅是存儲在內存中,而沒有建立相應的硬盤文件。
在實際開發中,cookie 常常需要長期保存 ,例如保存用戶登錄的狀態。這可以用下面的選項來實現:
document.cookie="userId=828; expires=GMT_String";
其中GMT_String是以GMT格式表示的時間字符串 ,這條語句就是將userId這個cookie設置爲GMT_String表示的過期時間,超過這個時間,cookie將消失,不可訪問。例如:如果要將cookie設置爲10天后過期,可以這樣實現:
<script language="JavaScript" type="text/JavaScript">
<!--
//獲取當前時間
var date=new Date();
var expireDays=10;
//將date設置爲10天以後的時間
date.setTime(date.getTime()+expireDays*24*3600*1000);
//將userId和userName兩個cookie設置爲10天后過期
document.cookie="userId=828; userName=hulk; expire="+date.toGMTString();
//-->
</script>

刪除cookie
爲了刪除一個cookie,可以將其過期時間設定爲一個過去的時間 ,例如:
<script language="JavaScript" type="text/JavaScript">
<!--
//獲取當前時間
var date=new Date();
//將date設置爲過去的時間
date.setTime(date.getTime()-10000);
//將userId這個cookie刪除
document.cookie="userId=828; expire="+date.toGMTString();
//-->
</script>

指定可訪問cookie的路徑
默認情況下,如果在某個頁面創建了一個cookie,那麼該頁面所在目錄中的其他頁面也可以訪問該cookie。如果這個目錄下還有子目錄,則在子目錄中也可以訪問。例如在www.xxxx.com/html/a.html 中所創建的cookie,可以被 www.xxxx.com/html/b.html www.xxx.com/ html/ some/c.html所訪問,但不能被 www.xxxx.com/d.html 訪問。
爲了控制cookie可以訪問的目錄,需要使用path參數設置cookie,語法如下:
document.cookie="name=value; path=cookieDir";
其中cookieDir表示可訪問cookie的目錄。例如:
document.cookie="userId=320; path=/shop";
就表示當前cookie僅能在shop目錄下使用。
如果要使cookie在整個網站下可用,可以將cookie_dir指定爲根目錄,例如:
document.cookie="userId=320; path=/";

指定可訪問cookie的主機名
和路徑類似,主機名是指同一個域下的不同主機,例如:www.google.com 和gmail.google.com就是兩個不同的主機名。默認情況下,一個主機中創建的cookie在另一個主機下是不能被訪問的,但可以通過domain參數來實現對其的控制,其語法格式爲:
document.cookie="name=value; domain=cookieDomain";
以google爲例,要實現跨主機訪問,可以寫爲:
document.cookie="name=value;domain=.google.com";
這樣,所有google.com下的主機都可以訪問該cookie。

綜合示例:構造通用的cookie處理函數
cookie的處理過程比較複雜,並具有一定的相似性。因此可以定義幾個函數來完成cookie的通用操作,從而實現代碼的複用。下面列出了常用的cookie操作及其函數實現。
1.添加一個cookie:addcookie(name,value,expireHours)
該函數接收3個參數:cookie名稱,cookie值,以及在多少小時後過期。這裏約定expireHours爲0時不設定過期時間,即當瀏覽器關閉時cookie自動消失。該函數實現如下:
<script language="JavaScript" type="text/JavaScript">
<!--
function addcookie(name,value,expireHours){
      var cookieString=name+"="+escape(value);
      //判斷是否設置過期時間
      if(expireHours>0){
             var date=new Date();
             date.setTime(date.getTime+expireHours*3600*1000);
             cookieString=cookieString+"; expire="+date.toGMTString();
      }
      document.cookie=cookieString;
}
//-->
</script>

2.獲取指定名稱的cookie值:getcookie(name)
該函數返回名稱爲name的cookie值,如果不存在則返回空,其實現如下:
<script language="JavaScript" type="text/JavaScript">
<!--
function getcookie(name){
      var strcookie=document.cookie;
      var arrcookie=strcookie.split("; ");
      for(var i=0;i<arrcookie.length;i++){
            var arr=arrcookie[i].split("=");
            if(arr[0]==name)return arr[1];
      }
      return "";
}
//-->
</script>

3.刪除指定名稱的cookie:deletecookie(name)
該函數可以刪除指定名稱的cookie,其實現如下:
<script language="JavaScript" type="text/JavaScript">
<!--
function deletecookie(name){
       var date=new Date();
       date.setTime(date.getTime()-10000);
       document.cookie=name+"=v; expire="+date.toGMTString();
}
//-->
</script>
 

也可以用另一種網上流傳的:

<script language="JavaScript" type="text/JavaScript">

//寫cookies函數 作者:翟振凱
function SetCookie(name,value)//兩個參數,一個是cookie的名子,一個是值
{
    var Days = 30; //此 cookie 將被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

function getCookie(name)//取cookies函數       
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
     if(arr != null) return unescape(arr[2]); return null;

}
function delCookie(name)//刪除cookie
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

SetCookie ("xiaoqi", "3")
alert(getCookie('xiaoqi'));
</script>

[JS]Cookie精通之路

<!—Cookies,有些人喜歡它們,有些人憎恨它們。但是,很少有人真正知道如何使用它們。現在你可以成爲少數人中的成員-可以自傲的Cookie 大師。-->

如果你象作者一樣記性不好,那麼你可能根本記不住人們的名字。我遇到人時,多半隻是點點頭,問句“吃了嘛!”,而且期望問候到此爲止。如果還需要表示些什 麼,那麼我就得求助於一些狡猾的技巧,好讓我能想對方是誰。比如胡扯起一些和對方有關的人,不管他們之間關係多遠,只要能避免不記得對方名字的尷尬就好: “你隔壁鄰居的侄子的可愛小狗邁菲斯特怎麼樣?”通過這個方法,我希望能讓對方感到,我確實很重視他(她),甚至還記得這些瑣事,雖然實際上連名字都忘記 了。但是,不是我不重視,而是我的記憶力實在是糟糕,而且要記住的名字又實在太多。如果我能給每個人設置cookies,那麼我就不會再犯這種記憶力問題 了。

在這篇文章裏,我們要學習:

1. 什麼是 Cookies?
2. Cookie 的構成
3. 操縱 Cookies
4. Cookie 怪獸

什麼是Cookies?

你會問,什麼是cookies呢? cookie 是瀏覽器保存在用戶計算機上的少量數據。它與特定的WEB頁或WEB站點關聯起來,自動地在WEB瀏覽器和WEB服務器之間傳遞。

比如,如果你運行的是Windows操作系統,使用Internet Explorer上網,那麼你會發現在你的“Windows”目錄下面有一個子目錄,叫做“Temporary Internet Files”。如果你有空看看這個目錄,就會發現裏面有一些文件,文件名稱看起來就象電子郵件地址。比如在我機器上的這個目錄裏,就有 “[email protected]”這樣的文件。這是一個cookie 文件,這個文件從哪來呢?猜一猜,它來自微軟的支持站點。順便說一句,這不是我的電子郵件地址,特此澄清。

對於管理細小的、不重要的、不想保存在中央數據庫裏的細節信息,Cookies 是個很不錯的方案。(這不是說大家的名字不重要。)比如,目前網站上不斷增長的自定義服務,可以爲每個用戶定製他們要看的內容。如果你設計的就是這樣一個 站點,那麼你怎麼來管理這樣的信息:一個用戶喜歡綠色的菜單條,而另一個喜歡紅色的。確實是個累人的問題。不過,這樣的信息,可以很安全地記錄到 cookie,並保存在用戶的計算機上,而你自己的數據庫空間可以留給更長久更有意義的數據。

FYI: Cookies 對於安全用途,通常很有用。我不想在此就這一問題過於深入,只是提供一個示例,可以看到如何使用在一段時間之後過期的cookies來保證站點安全:

1. 使用用戶名和口令,通過 SSL 登錄。
2. 在服務器的數據庫裏檢查用戶名和口令。如果登錄成功,建立一個當前時間標籤的消息摘要 (比如 MD5) ,並把它保存在cookie和服務器數據庫裏。把用戶的登錄時間保存在服務器數據庫裏面的用戶記錄裏。
3. 在進行每個安全事務時(用戶處於登錄狀態的任何事務),把cookie的消息摘要和保存在服務器數據庫裏的摘要進行比較,如果比較失敗,就把用戶引導到登錄界面。
4. 如果第3步檢查通過,那麼檢查當前時間和登錄時間之音經過的時間是否超過允許的時間長度。如果用戶已經超時,那麼就把用戶引到登錄界面。
5. 如果第3步和第4步都通過了,那麼把登錄時間重新設置成當前時間,允許事務發生。那些需要你登錄的安全站點,可能多數使用的都是和這裏介紹的類似的方法。
Cookie的構成

Cookies最初設計時,是爲了CGI編程。但是,我們也可以使用Javascript腳本來操縱cookies。在本文裏,我們將演示如何使用 Javascript腳本來操縱cookies。(如果有需求,我可能會在以後的文章裏介紹如何使用Perl進行cookie管理。但是如果實在等不得, 那麼我現在就教你一手:仔細看看CGI.pm。在這個CGI包裏有一個cookie()函數,可以用它建立cookie。但是,還是讓我們先來介紹 cookies的本質。

在Javascript腳本里,一個cookie 實際就是一個字符串屬性。當你讀取cookie的值時,就得到一個字符串,裏面當前WEB頁使用的所有cookies的名稱和值。每個cookie除了 name名稱和value值這兩個屬性以外,還有四個屬性。這些屬性是: expires過期時間、 path路徑、 domain域、以及 secure安全。

Expires – 過期時間。指定cookie的生命期。具體是值是過期日期。如果想讓cookie的存在期限超過當前瀏覽器會話時間,就必須使用這個屬性。當過了到期日期時,瀏覽器就可以刪除cookie文件,沒有任何影響。

Path – 路徑。指定與cookie關聯的WEB頁。值可以是一個目錄,或者是一個路徑。如果http://www.zdnet.com/devhead /index.html 建立了一個cookie,那麼在http://www.zdnet.com/devhead/目錄裏的所有頁面,以及該目錄下面任何子目錄裏的頁面都可以 訪問這個cookie。這就是說,在http://www.zdnet.com/devhead/stories/articles 裏的任何頁面都可以訪問http://www.zdnet.com/devhead/index.html建立的cookie。但是,如果http: //www.zdnet.com/zdnn/ 需要訪問http://www.zdnet.com/devhead/index.html設置的cookes,該怎麼辦?這時,我們要把cookies 的path屬性設置成“/”。在指定路徑的時候,凡是來自同一服務器,URL裏有相同路徑的所有WEB頁面都可以共享cookies。現在看另一個例子: 如果想讓 http://www.zdnet.com/devhead/filters/ 和http://www.zdnet.com/devhead/stories/共享cookies,就要把path設成“/devhead”。

Domain – 域。指定關聯的WEB服務器或域。值是域名,比如zdnet.com。這是對path路徑屬性的一個延伸。如果我們想讓 catalog.mycompany.com 能夠訪問shoppingcart.mycompany.com設置的cookies,該怎麼辦? 我們可以把domain屬性設置成“mycompany.com”,並把path屬性設置成“/”。FYI:不能把cookies域屬性設置成與設置它的 服務器的所在域不同的值。

Secure – 安全。指定cookie的值通過網絡如何在用戶和WEB服務器之間傳遞。這個屬性的值或者是“secure”,或者爲空。缺省情況下,該屬性爲空,也就是 使用不安全的HTTP連接傳遞數據。如果一個 cookie 標記爲secure,那麼,它與WEB服務器之間就通過HTTPS或者其它安全協議傳遞數據。不過,設置了secure屬性不代表其他人不能看到你機器本 地保存的cookie。換句話說,把cookie設置爲secure,只保證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的 cookie文件並不加密。如果想讓本地cookie也加密,得自己加密數據。




操縱Cookies

請記住,cookie就是文檔的一個字符串屬性。要保存cookie,只要建立一個字符串,格式是name=<value>(名稱=值),然 後把文檔的 document.cookie 設置成與它相等即可。比如,假設想保存表單接收到的用戶名,那麼代碼看起來就象這樣:

document.cookie = "username" + escape(form.username.value);

在這裏,使用 escape() 函數非常重要,因爲cookie值裏可能包含分號、逗號或者空格。這就是說,在讀取cookie值時,必須使用對應的unescape()函數給值解碼。

我們當然還得介紹cookie的四個屬性。這些屬性用下面的格式加到字符串值後面:

name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]

名稱=<值>[; expires=<日期>][; domain=<域>][; path=<路徑>][; 安全]

<value>, <date>, <domain> 和 <path> 應當用對應的值替換。<date> 應當使用GMT格式,可以使用Javascript腳本語言的日期類Date的.toGMTString() 方法得到這一GMT格式的日期值。方括號代表這項是可選的。比如在 [; secure]兩邊的方括號代表要想把cookie設置成安全的,就需要把"; secure" 加到cookie字符串值的後面。如果"; secure" 沒有加到cookie字符串後面,那麼這個cookie就是不安全的。不要把尖括號<> 和方括號[] 加到cookie裏(除非它們是某些值的內容)。設置屬性時,不限屬性,可以用任何順序設置。

下面是一個例子,在這個例子裏,cookie "username" 被設置成在15分鐘之後過期,可以被服務器上的所有目錄訪問,可以被"mydomain.com"域裏的所有服務器訪問,安全狀態爲安全。

// Date() 的構造器設置以毫秒爲單位
// .getTime() 方法返回時間,單位爲毫秒
// 所以要設置15分鐘到期,要用60000毫秒乘15分鐘
var expiration = new Date((new Date()).getTime() + 15 * 60000);
document.cookie = "username=" + escape(form.username.value)+ "; expires ="
+ expiration.toGMTString() + "; path=" + "/" + "; _
domain=" + "mydomain.com" + "; secure";

讀取cookies值有點象個小把戲,因爲你一次就得到了屬於當前文檔的所有cookies。

// 下面這個語句讀取了屬於當前文檔的所有cookies
var allcookies = document.cookie;

現在,我們得解析allcookies變量裏的不同cookies,找到感興趣的指定cookie。這個工作很簡單,因爲我們可以利用Javascript語言提供的擴展字符串支持。

如果我們對前面分配的cookie "username" 感興趣,可以用下面的腳本來讀取它的值。

// 我們定義一個函數,用來讀取特定的cookie值。
function getCookie(cookie_name)

var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name);

// 如果找到了索引,就代表cookie存在,
// 反之,就說明不存在。
if (cookie_pos != -1)

// 把cookie_pos放在值的開始,只要給值加1即可。
cookie_pos += cookie_name.length + 1;
var cookie_end = allcookies.indexOf(";", cookie_pos);

if (cookie_end == -1)

cookie_end = allcookies.length;


var value = unescape(allcookies.substring(cookie_pos, cookie_end));


return value;


// 調用函數
var cookie_val = getCookie("username");

上面例程裏的 cookie_val 變量可以用來生成動態內容,或者發送給服務器端CGI腳本進行處理。現在你知道了使用Javascript腳本操縱cookies的基本方法。但是,如果 你跟我一樣,那麼我們要做的第一件事,就是建立一些接口函數,把cookies處理上的麻煩隱藏起來。不過,在你開始編程之前,稍候片刻。這些工作,早就 有人替你做好了。你要做的,只是到哪去找這些接口函數而已。

比如,在David Flangan的Javascript: The Definitive Guide 3rd Ed.這本書裏,可以找到很好的cookie應用類。你也可以在Oreilly的WEB站點上找到這本書裏的例子。本文最後的鏈接列表裏,有一些訪問這些 cookie示例的直接鏈接。



Cookies 怪獸

因爲某些原因Cookies 的名聲很不好。許多人利用cookies做一些卑鄙的事情,比如流量分析、點擊跟蹤。Cookies 也不是非常安全,特別是沒有secure屬性的cookies。不過,即使你用了安全的cookies,如果你和別人共用計算機,比如在網吧,那麼別人就 可以窺探計算機硬盤上未加密保存的cookie文件,也就有可能竊取你的敏感信息。所以,如果你是一個WEB開發人員,那麼你要認真考慮這些問題。不要濫 用cookies。不要把用戶可能認爲是敏感的數據保存在cookies裏。如果把用戶的社會保險號、信用卡號等保存在cookie裏,等於把這些敏感信 息放在窗戶紙下,無異於把用戶投到極大危險之中。一個好的原則是,如果你不想陌生人瞭解你的這些信息,那就不要把它們保存在cookies裏。

另外,cookies還有一些實際的限制。Cookies保留在計算機上,不跟着用戶走。如果用戶想換計算機,那麼新計算機無法得到原來的cookie。 甚至用戶在同一臺計算機上使用不同瀏覽器,也得不到原來的cookie:Netscape 不能讀取Internet Explorer 的cookies。

還有,用戶也不願意接受cookies。所以不要以爲所有的瀏覽器都能接受你發出的cookies。如果瀏覽器不接受cookies,你要保證自己的WEB站點不致因此而崩潰或中斷。

另外WEB 瀏覽器能保留的cookies不一定能超過300個。也沒有標準規定瀏覽器什麼時候、怎麼樣作廢cookies。所以達到限制時,瀏覽器能夠有效地隨機刪 除cookies。瀏覽器保留的來自一個WEB服務器上的cookies,不超過20個,每個cookie的數據(包括名稱和值),不超過4K字節。(不 過,本文裏的cookie尺寸沒問題,它只佔了12 K字節,保存在3個3 cookies裏。)

簡而言之,注意保持cookie簡單。不要依賴cookies的存在,不要在每個cookie裏保存太多信息。不要保存太多的cookes。但是,拋除這些限制,在技巧高超的WEB管理員手裏,cookie的概念是一個有用的工具。

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