一、創建cookie
HttpCookie cookie = new HttpCookie("UserInfo");//創建多值cookie
cookie.Expires = DateTime.Now.AddDays(1);//設置cookie的失效時間為一天,如果不設置失效時間,cookie會在瀏覽器關閉即消失,不會保存本地文件
cookie.Values["LoginName"] = txtusername.Text;
cookie.Values["Pwd"] = txtusername.Text;
這樣創建了一個key為UserInfo的cookie,具有LoginName和Pwd兩個屬性。
創建為cookie不要忘記添加cookie,否則是取不出來的
Response.Cookies.Add(cookie);
注:如果使用response.Cookies創建cookie就不用寫上一句代碼了。
二、取cookie
HttpCookie cookies = Request.Cookies["UserInfo"];//取cookie
txtusername.Text = cookies.Values["LoginName"];//去cookie的LoginName屬性 賦值給帳號文本框
txtpass.Attributes.Add("value",cookies.Values["Pwd"]);//密碼框不能直接賦值,使用添加屬性可以賦值
cookie屬性:
name字段:為一個cookie的名稱。
value字段:為一個cookie的值。
domain字段:為可以訪問此cookie的域名。
path字段:為可以訪問此cookie的頁面路徑。 比如domain是abc.com,path是/test,那么只有/test路徑下的頁面可以讀取此cookie。
expires 字段:為此cookie超時時間。若設置其值為一個時間,那么當到達此時間后,此cookie失效。不設置的話默認值是Session,意思是cookie會和session一起失效。當瀏覽器關閉(不是瀏覽器標簽頁,而是整個瀏覽器) 后,此cookie失效。
Size字段 :此cookie大小。
http字段 :cookie的httponly屬性。若此屬性為true,則只有在http請求頭中會帶有此cookie的信息,而不能通過document.cookie來訪問此cookie。
secure字段 :設置是否只能通過https來傳遞此條cookie
在這里只寫了簡單的Cookie操作
設置Cookie
public void AddCookie() { //方法一: HttpCookie Cookie1 = new HttpCookie("CookieName");
Cookie1.Expires = DateTime.Now.AddDays(1);//設置過期時間 Cookie1.Values["key1"] = "Value1";
Cookie1.Values["key2"] = "Value2"; Response.Cookies.Add(Cookie1);//響應一個Cookies
//方法二: Response.Cookies["CookieName"].Values["Key1"] = "Value1"; Response.Cookies["CookieName"].Values["Key2"] = "Value2";//存多值 Response.Cookies["CookieName"].Expires = DateTime.Now.AddDays(1);//設置過期時間
//方法三: HttpCookie cookie3 = new HttpCookie("CookieName"); DateTime dt = DateTime.Now; //獲取當前時間 TimeSpan ts = new TimeSpan(0, 0, 1, 0, 0);//過期時間為1分鍾 cookie3.Expires = dt.Add(ts);//設置過期時間 cookie3.Values.Add("Key1", "Value1"); cookie3.Values.Add("Key2", "Value2"); Response.AppendCookie(cookie3); //響應一個Cookies }
獲取Cookie
public void ReadCookie() { //方法一: HttpCookie cookies1 = Request.Cookies["CookieName"]; string Values1 = cookies1.Value; //string Values 1= cookies.Values["Key"];//獲取多值 //方法二: string Values2 = Request.Cookies["CookieName"].Value; //string Values2 = Request.Cookies["CookieName"].Values["Key"];//獲取多值 //方法三:(獲取多值) string Values3 = Server.UrlDecode(Request.Cookies["CookieName"]["Key"]); //System.Web.HttpContext.Current.Request.Cookies["CookieName"];//同Request.Cookies }
修改Cookie
public void UpdateCookie() { //修改只需要重新給要修改的cookie賦值就行,這樣舊的就會被覆蓋掉。 //所以這里只寫一種方法,更多請參考創建cookie HttpCookie Cookie = Request.Cookies["CookieName"]; Cookie.Expires = DateTime.Now.AddDays(1);//設置過期時間 Cookie.Value = "Value";//設置值 Response.Cookies.Add(Cookie);//響應一個Cookies }
刪除Cookie
public void DeleteCookie() { //刪除cookie只需修改的cookie的過期時間(expires)過去的時間即可 //所以這里只寫一種方法,更多請參考創建cookie HttpCookie Cookie = Request.Cookies["CookieName"]; Cookie.Expires = DateTime.Now.AddDays(-1);//設置過期時間 Response.Cookies.Add(Cookie);//響應一個Cookies }
-
注意:對Cookie進行操作時應先判斷cookie不為空
-
注意:當Cookie存中文出現亂碼,則在存放時給中文編碼,讀取時解碼即可,如Cookie.setCookie("name", Server.UrlEncode("Value"),1)
-
注意:只要不給cookie設置過期時間,cookie在瀏覽器關閉的時候自動失效