ASP.NET對Cookie的操作

概述

Cookie用來保存客戶瀏覽器請求服務器頁面的請求信息。

我們可以存放非敏感的用戶信息,保存時間可以根據需要設置。如果沒有設置Cookie失效日期,它的生命周期保存到關閉瀏覽器為止,Cookie對象的Expires屬性設置為MinValue表示永不過期。

Cookie存儲的數據量受限制,大多數的瀏覽器為4K因此不要存放大數據。

由於並非所有的瀏覽器都支持Cookie,數據將以明文的形式保存在客戶端。

一、創建Cookie:發送到客戶端瀏覽器

Domain和Path相同的所有Cookie在客戶端存在於一個文件中。

//通用設置
Response.Cookies["userName"].Value = "Park";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);//不設Expires默認關閉瀏覽器就過期
Response.Cookies["userName"].Domain = "park.aa.com";//Domain默認為域名部分,以表示aa.com下的所有子域名。
Response.Cookies["userName"].Path = "App1";//Path默認為根目錄"/",表示根目錄下的所有頁面和子目錄

//單值Cookie
HttpCookie Cookie = new HttpCookie("userName");
cookie.Value = "Park";
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);

//多值Cookie
HttpCookie cookies = new HttpCookie("userName");
cookies["name"] = "Park";
cookies["sex"] = "1";
cookies.Expires = DateTime.Now.AddMinutes(20);
Response.Cookies.Add(cookies);
//Response.SetCookies(cookies)
//Response.AppendCookis(cookies);

二、讀取Cookie:

Domain、Path和Expires是無法讀取的

if (Request.Cookies["userName"] != null)
{
    //讀取多值Cookie
    Response.Write(Request.Cookies["userName"].Value) //可以Server.HtmlEncode()編碼
   //讀取多值Cookie
    Response.Write("Cookie中鍵值為userid的值:" + Request.Cookies["userName"]["sex"]);
}

三、修改Cookie

不能直接修改一個Cookie,是創建一個同名的Cookie,並把該Cookie發送到瀏覽器覆蓋客戶機上的舊Cookie。

HttpCookie cok = Request.Cookies["userName"];//獲取客戶端的Cookie對象
if (cok != null)
{
    cok.Values["userid"] = "alter-value";//修改Cookie        
    cok.Values.Set("newid", "newValue");//往Cookie裡加入新的內容
    Response.AppendCookie(cok);

    //或者
    Response.Cookies["userName"].Value = "aa";
}
 
Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1); 

四、刪除Cookie:

無法直接刪除一個Cookie,可通過修改它的Expires為過去的某個時間,瀏覽器會刪除已經過期的Cookie。

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(-1);

//或者
HttpCookie cok = Request.Cookies["userName"];
if (cok != null)
{
    if (!CheckBox1.Checked)
    {
        cok.Values.Remove("userid");//移除鍵值為userid的值
    }
    else
    {
        TimeSpan ts = new TimeSpan(0, 0, 0, 0);
        cok.Expires = DateTime.Now.Add(ts);//刪除整個Cookie,隻要把過期時間設置為現在
    }
    Response.AppendCookie(cok);
}

到此這篇關於ASP.NET操作Cookie的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: