ASP.NET中Cookie編程的基礎(chǔ)知識(shí)(3)
發(fā)表時(shí)間:2024-02-08 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]查看您的 Cookie 您可能會(huì)發(fā)現(xiàn),了解創(chuàng)建 Cookie 的效果會(huì)對(duì)您很有幫助。而查看 Cookie 是比較容易的,因?yàn)樗鼈兌际俏谋疚募P(guān)鍵在于您能找到它們。不同的瀏覽器保存 Cookie 的方式也不同。我將介紹 Internet Explorer 是如何保存 Cookie 的。如果您使用...
查看您的 Cookie
您可能會(huì)發(fā)現(xiàn),了解創(chuàng)建 Cookie 的效果會(huì)對(duì)您很有幫助。而查看 Cookie 是比較容易的,因?yàn)樗鼈兌际俏谋疚募P(guān)鍵在于您能找到它們。不同的瀏覽器保存 Cookie 的方式也不同。我將介紹 Internet Explorer 是如何保存 Cookie 的。如果您使用的是其他瀏覽器,請(qǐng)查看該瀏覽器的幫助,以了解有關(guān) Cookie 處理方面的知識(shí)。
查看 Cookie 的一個(gè)簡(jiǎn)便方法是讓 Internet Explorer 為您查找。在 Internet Explorer 中,從“工具”菜單中選擇“Internet 選項(xiàng)”,在“常規(guī)”選項(xiàng)卡中單擊“設(shè)置”,然后單擊“查看文件”。Internet Explorer 將打開一個(gè)窗口,顯示所有的臨時(shí)文件,包括 Cookie。在窗口中查找以“Cookie:”開頭的文件 或查找文本文件。雙擊一個(gè) Cookie,在默認(rèn)的文本文件中打開它。
您也可以在硬盤上查找 Cookie 的文本文件,從而打開 Cookie。Internet Explorer 將站點(diǎn)的 Cookie 保存在文件名格式為 <user>@<domain>.txt 的文件中,其中 <user> 是您的帳戶名。例如,如果您的名稱為 mikepope,您訪問的站點(diǎn)為 www.contoso.com,那么該站點(diǎn)的 Cookie 將保存在名為 mikepope@www.contoso.txt 的文件中。(該文件名可能包含一個(gè)順序的編號(hào),如 mikepope@www.contoso[1].txt。)
這個(gè) Cookie 文本文件是與用戶相關(guān)的,所以會(huì)按照帳戶分別保存。例如,在 Windows XP 中,您可以在如下所示的目錄中找到 Cookie 文件:
c:\Documents and Settings\<user>\Cookies
要查找最新創(chuàng)建的 Cookie,可以按修改日期對(duì)目錄內(nèi)容進(jìn)行排序,并查找最近修改的文件。
您可以使用文本編輯器打開 Cookie。如果該文件包含多個(gè) Cookie,這些 Cookie 之間將用星號(hào) (*) 分隔。每個(gè) Cookie 的第一行是 Cookie 的名稱,第二行是值,其余各行則包含 Cookie 的日常處理信息,例如過期日期和時(shí)間。Cookie 中還有一個(gè)簡(jiǎn)單的校驗(yàn)和,如果更改 Cookie 名稱或值的長(zhǎng)度,瀏覽器就會(huì)檢測(cè)到修改并刪除該 Cookie。
多值 Cookie(子鍵)
以上示例為每個(gè)要保存的值(用戶名、上次訪問時(shí)間)都使用了一個(gè) Cookie 。您也可以在一個(gè) Cookie 中保存多個(gè)名稱/值對(duì)。名稱/值對(duì)也稱作“鍵”或“子鍵”,具體取決于您讀取的內(nèi)容。(如果您熟悉 URL 的結(jié)構(gòu),就會(huì)發(fā)現(xiàn)子鍵與其中的查詢字符串非常相象。) 例如,如果不希望創(chuàng)建名為“userName”和“l(fā)astVisit”的兩個(gè)單獨(dú)的 Cookie,可以創(chuàng)建一個(gè)名為“userInfo”的 Cookie,并使其包含兩個(gè)子鍵:“userName”和“l(fā)astVisit”。
有很多原因會(huì)讓我們用子鍵來代替單獨(dú)的 Cookie。最顯而易見的是,把相關(guān)或類似的信息放在一個(gè) Cookie 中會(huì)比較有條理。另外,由于所有信息都在一個(gè) Cookie 中,所以諸如有效期之類的 Cookie 屬性就適用于所有信息。(當(dāng)然,如果要為不同類型的信息指定不同的過期日期,就應(yīng)該把信息保存在單獨(dú)的 Cookie 中。)
帶有子鍵的 Cookie 還可以幫助您減小 Cookie 的大小。如前面的 Cookie 的限制一節(jié)所述,Cookie 的總大小限制在 4096 字節(jié)以內(nèi),而且不能為一個(gè)網(wǎng)站保存超過 20 個(gè) Cookie。利用帶子鍵的單個(gè) Cookie,站點(diǎn)的 Cookie 數(shù)量就不會(huì)超過 20 個(gè)的限制。此外,一個(gè) Cookie 會(huì)占用大約 50 個(gè)字符的基本空間開銷(用于保存有效期信息等),再加上其中保存的值的長(zhǎng)度,其總和接近 4K 的限制。如果使用五個(gè)子鍵而不是五個(gè)單獨(dú)的 Cookie,您可以省去四個(gè) Cookie 的基本空間開銷,總共能節(jié)省大約 200 個(gè)字節(jié)。
要?jiǎng)?chuàng)建帶子鍵的 Cookie,您可以使用用于編寫單個(gè) Cookie 的各種語法。以下示例顯示了編寫同一 Cookie 的兩種不同方法,其中的每個(gè) Cookie 都帶有兩個(gè)子鍵:
Response.Cookies("userInfo")("userName") = "mike"
Response.Cookies("userInfo")("lastVisit") = DateTime.Now.ToString
Response.Cookies("userInfo").Expires = DateTime.Now.AddDays(1)
Dim aCookie As New HttpCookie("userInfo")
aCookie.Values("userName") = "mike"
aCookie.Values("lastVisit") = DateTime.Now.ToString
aCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(aCookie)