ASP.NET2.0揭祕讀書筆記五——維護應用程式狀態之cookie

iDotNetSpace發表於2009-05-12

瀏覽器Cookies用於關聯一些文字到網站的每一個使用者。

使用瀏覽器cookie

當Web伺服器端建立一個cookie時,一個附加的HTTP首部在瀏覽器顯示頁面時被髮送到瀏覽器。HTTP首部類似如下形式:

Set-Cookie:message=Hello

Set-Cookie首部使得瀏覽器建立一個名為message的cookie包含值Hello。

在瀏覽器建立cookie以後,它從相同的應用程式請求頁面時都將會把cookie的資訊傳送給Web伺服器端。

一個cookie就是一段文字,cookie只用用於儲存字串值。

 實際上,我們可以儲存兩種型別的cookie,一種是會話cookie,一種是持久化cookie。會話cookie只儲存在記憶體中,關閉瀏覽器就消失了,持久化cookie則被儲存到使用者電腦上,可以持久化。注意,持久化cookie是對瀏覽器獨立的,即不同瀏覽器建立的cookie儲存的位置不同,也不能共享。

另外,cookie儲存的資訊都是以明文形式的,所以敏感資訊不要儲存到cookie上。

cookie的安全性限制

cookie對瀏覽器獨立

cookie對域名獨立

一個域名儲存的cookie總大小不能超過4096byte。這個大小的限制,包含所有的cookie名稱和值在內。大多數瀏覽器限制一個域名不超過20個cookie。

     建立cookie

     可以通過給Response.Cookies集合新增cookie來建立新的cookie。Response.Cookies集合包含所有Web伺服器端傳送到瀏覽器的cookie。

  Response.Cookies["message"].Value = txtCookieValue.Text;

  以上程式碼只建立一個會話cookie,關閉瀏覽器就會消失。如果需要建立持久化cookie,則需要為cookie指定一個過期時間。

     Response.Cookies["counter"].Value = counter.ToString();
     Response.Cookies["counter"].Expires = DateTime.Now.AddYears(2);

讀取cookie

Request.Cookies集合可以讀取cookie。

if (Request.Cookies["message"] != null)
    lblCookieValue.Text = Request.Cookies["message"].Value;

設定cookie屬性

HttpCookie類代表cookie,當建立或讀取一個cookie時,可以使用該類下面的這些屬性:

Domain——設定關聯cookie的域名;

Expires——通過給定一個過期時間來建立一個持久化cookie;

HasKeys——用於指定一個cookie是否是一個多值cookie;

HttpOnly——用於避免cookie被Javascript訪問;

Name——cookie的名稱;

Path——關聯到cookie的路徑,預設為/;

Value——讀寫cookie的值;

Secure——用於指定cookie需要通過安全Socket層連線傳遞;

Values——使用多值cookie時,用於讀寫特定的值。

刪除cookie

設定cookie的Expires的值為過去時間即可。

使用多值cookie

因為對單個域名瀏覽器不能儲存超過20個cookie,可以通過建立多值cookie來突破該限制。多值cookie是一個包含子鍵的單一cookie。可以根據需要建立任意數量的子鍵。

Response.Cookies["preferences"]["firstName"] = txtFirstName.Text;

        Response.Cookies["preferences"]["lastName"] = txtLastName.Text;

        Response.Cookies["preferences"]["favoriteColor"] = txtFavoriteColor.Text;

        Response.Cookies["preferences"].Expires = DateTime.MaxValue;

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-594858/,如需轉載,請註明出處,否則將追究法律責任。

相關文章