程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 維護應用程序狀態之cookie

維護應用程序狀態之cookie

編輯:關於C#
 

浏覽器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;
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved