Cookie 最早出現是在Netscape Navigator 2.0 中。后來 ASP 也引入了這個技術,它的作用是與 Session 對象相結合來識別用戶。每當用戶開始連接站點時,系統將自動在內存塊中創建一個用戶有關的會話狀態,同時創建一個用戶的 ID 存放在瀏覽器端,與當前的用戶惟一地聯系起來。這樣,服務器保存了 Session,瀏覽器保存了 Cookie(用戶的 ID)。當下一次用戶發出請求時,請求的用戶將被要求提交用戶的 ID,兩者對照以正確地還原原來的會話狀態。這就是在無狀態協議的 HTTP 條件下保持用戶標志的方法。
可以通過 Response.Cookies.Add() 方法直接向瀏覽器寫入 Cookie,通過 Request.Cookies 方法讀取已經設置好的 Cookie。
寫入Cookie 的方法是,先創建一個HttpCookie 對象,通過這個對象來構造一個 Cookie。例如:
//創建一個 HttpCookie 對象 HttpCookie cookie = new HttpCookie("樂豬網"); //設定此 Cookie 值 cookie.Value = "編程入門網站"; //加入此 Cookie Response.Cookies.Add(cookie); Cookie 有臨時的,也有永遠的。永久的 Cookie 以文件形式存儲在計算機上,關閉 Internet Explorer 時仍然保留在計算機上。再次訪問該站點時,創建該 Cookie 的網站可以讀取。在具體的編程時候,是在寫入此 Cookie 的時候,設定 Cookie 的生命周期,其代碼如下:
DateTime dtNow = DateTime.Now; TimeSpan tsMinute = new TimeSpan(0, 1, 0, 0); cookie.Expires = dtNow + tsMinute; Response.Cookies.Add(cookie);
以上代碼是設定新產生的 Cookie 的生命期為一個小時,可以通過修改 TimeSpan 的屬性來設定 Cookie 具體的生命期。如果不設定時間,默認時間為 20 分鐘。
讀取指定的 Cookie 時的語句如下:
HttpCookie cookie = Request.Cookies["Cookie 的名稱"];
如果想將讀出的 Cookie 顯示出來時,可以使用以下語句:
Response.Write(cookie.Value.ToString());
Cookie 是保存在客戶端的字符串,它會影響用戶的行為,但又不受用戶的直接管理,雖然它只是一種標志(字母數字字符串)而不是程序,不可能用它來收集用戶的信息,破壞用戶的隱私。但有的用戶仍然不放心,也可能是不愿意別人占用自己的空間,相當一部分用戶在瀏覽器中禁止使用 Cookie。這就給識別用戶帶來了困難。
ASP.NET 2.0 現在已經完全解決了在不使用 Cookie 的情況下,識別用戶的方法(ASP.NET 1.1 版本只部分地解決了這一問題)。解決的方法很簡單,只需要在應用程序的根目錄下的 Web.config 文件中,對 <sessionState> 節點進行配置,其他任何程序都不需要修改。為什么一定要在應用程序的根目錄下配置?因為會話狀態的設置是應用程序范圍的設置。站點中的網頁要么全都使用該配置,要么全都不使用。配置的語句是:
新聞熱點
疑難解答
圖片精選