1 //建立一個HttpCookie對象 2 HttpCookie cookie = new HttpCookie("RON"); 3 //設定此cookies值 4 cookie.Value = "我叫小魏"; 5 //設定cookie的生命週期,在這裡定義為三分鐘 6 DateTime dtNow = DateTime.Now; 7 TimeSpan tsMinute = new TimeSpan(0, 0, 3, 0); 8 cookie.Expires = dtNow + tsMinute; 9 cookie["Name"] = "小魏";10 cookie["Sex"] = "男";11 cookie["Age"] = "22";12 //加入此cookie13 Response.Cookies.Add(cookie);14 Response.Write("Cookie建立完畢");
HttpCookie 在 System.Web 這個命名空間裡面,所以你需要引用
1 using System.Web;
*建立Cookie
建立Cookie的時候必須指定Cookie的Name和Value。在例子中,cookie 的Name是“RON”,Value是“我叫小魏”。cookie是儲存在瀏覽器當中的,而每個Cookie的區別是根據Name這個屬性的值來確定的。所以,如果Name相同,Cookie的內容將被覆蓋。而那些cookie["Name"]等等是cookie["RON"]的子鍵。
*Cookie有效期間
Cookie的另外一個重要的屬性是有效期間。通過屬性Expires設定。例子中,cookie設定的有效期間為三分鐘。目前為止,最長的有效期間是50年,這是那個丫地設定的啊。有50年的公司都不錯了。其實在有效期間的設定上我更喜歡這句話。
cookie.Expires = DateTime.Now.AddMinutes(3);
簡單,容易理解。
在有效期間的問題上,有兩個時間比較特殊:
#永續性 Cookie 設定永遠不到期 最長為50年
#非永續性 Cookie 不設定有效期間 關閉瀏覽器即消失
*多值cookie
Cookie可以儲存多個值,你只要建立一個帶子鍵的Cookie就可以了。例如
1 HttpCookie aCookie = new HttpCookie("userInfo");2 aCookie.Values["userName"] = "rond";3 aCookie.Values["lastVisit"] = DateTime.Now.ToString();4 aCookie.Expires = DateTime.Now.AddDays(1);
例子中建立了一個Name為userInfo的Cookie,而且此Cookie還帶有兩個子鍵。
*Cookie的範圍
預設情況下,Cookie的整個網站都是有效。意思就是說,在同一個網站(也可以理解成同一個網域名稱)下的所有網頁都是可以擷取到Cookie的。如果你不希望你的Cookie在所有範圍都有效。你可以限定Cookie的範圍。方法是通過Cookie的Path屬性,屬性值為範圍所在的路徑,相對路徑有效。譬如
1 appCookie.Path = "/Application1";
除了限定Cookie的路徑範圍,還可以用Cookie的Domain屬性限定Cookie的網域名稱範圍。例如
1 appCookie.Domain = "jsjx.gdufs.edu.cn";
例子中將cookie限定在“廣東外語外貿大學”的“資訊學院”(jsjx.gdufs.edu.cn)網站下,而不會再“廣東外語外貿大學”(gdufs.edu.cn)的主網站上面產生效果。
*提交Cookie
Cookie是儲存在瀏覽器的東西,所以需要提交才能將資訊儲存在瀏覽器當中。
1 Response.Cookies.Add(aCookie);
這樣就可以將資料儲存在瀏覽器當中了。
PS:Cookie的建立還有另外一種方式,可以參考MSDN的說明。
讀取:
先來個例子
//獲得cookie HttpCookie cookie = Request.Cookies["RON"]; //確定是否存在使用者輸入的cookie if (null == cookie) { Response.Write("沒有發現指定的cookie。"); } else { //找到指定的cookie,顯示cookie的值 String strCookieValue = cookie.Value.ToString(); Response.Write( " cookie 的值為: " + strCookieValue + " <br >"); Response.Write(cookie["UserName"]); }
*擷取
通過Request響應,我們可以擷取到Request.Cookies["RON"].根據原本的設定可以將Cookie的值讀取出來。cookie.Value可以擷取到Cookie儲存的所有值。不過個人比較喜歡cookie["UserName"]的方式擷取自己想要的cookie的值。
如果你是通過多值設定了Cookie的子鍵。那麼擷取方式和設定方式是差不多的。
*讀取多個Cookie
在一個瀏覽器上面,可能儲存了不止一個cookie。但是怎麼擷取所有的cookie呢。寫個迴圈就出來了。
for (int i = 0; i < Request.Cookies.Count; i++) { Response.Write("Cookie[" + i + "]的Name為:" + Request.Cookies[i].Name + "<br/>"); Response.Write("Cookie[" + i + "]的Value為:" + Request.Cookies[i].Value + "<br/>"); }
如果你不想把子鍵的鍵/值都顯現在一起,而想單個擷取。也可以寫個迴圈全部顯示出來。
//顯示子鍵 for (int i = 0; i < Request.Cookies.Count; i++) { Response.Write("Cookie[" + i + "]的Name為:" + Request.Cookies[i].Name + "<br/>"); if (Request.Cookies[i].HasKeys) { for (int j = 0; j < Request.Cookies[i].Values.Count; j++) { Response.Write("Cookie[" + i + "][" + j + "]的Name為:" + Request.Cookies[i].Values.AllKeys[j] + "<br/>"); Response.Write("Cookie[" + i + "][" + j + "]的Value為:" + Request.Cookies[i].Values[j] + "<br/>"); } } }
刪除:
Cookie儲存在瀏覽器端,儲存時間是開發人員設定的時間,當時間到期時,瀏覽器端就會刪除Cookie。所以刪除Cookie的工作就是將Cookie的有效期間設定到期即可。你可以設定有效期間為目前時間,Cookie立即到期。也可以設定過去的時間,Cookie也會被刪除。
如例子,我當初建立了一個叫做RON的Cookie,現在我要刪除它。所以要建立一個同名的Cookie,時間設定為過去。
*刪除某一個Cookie
HttpCookie aCookie= new HttpCookie("RON"); aCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(aCookie);
這樣就可以將Cookie["RON"]刪除。
可能你不記得你在測試的時候瀏覽器端到底儲存了多少個Cookie,你可以寫個迴圈將Cookie全部刪除掉。
*刪除所有Cookie