編寫 Cookie瀏覽器
瀏覽器負責管理用戶系統上的 Cookie。Cookie 經過 HttpResponse 對象發送到瀏覽器,該對象公開稱爲 Cookies 的集合。 能夠將 HttpResponse 對象做爲 Page 類的 Response 屬性來訪問。 要發送給瀏覽器的全部 Cookie 都必須添加到此集合中。建立 Cookie 時,須要指定 Name 和 Value。 每一個 Cookie 必須有一個惟一的名稱,以便之後從瀏覽器讀取 Cookie 時能夠識別它。因爲 Cookie 按名稱存儲,所以用相同的名稱命名兩個 Cookie 會致使其中一個 Cookie 被覆蓋。服務器
Response.Cookies["userName"].Value = "patrick"; Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1); HttpCookie aCookie = new HttpCookie("lastVisit"); aCookie.Value = DateTime.Now.ToString(); aCookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(aCookie);
能夠在 Cookie 中存儲一個值,如用戶名和上次訪問時間。也能夠在一個 Cookie 中存儲多個名稱/值對。名稱/值對稱爲子鍵。(子鍵佈局相似於 URL 中的查詢字符串。)例如,不要建立兩個名爲 userName 和 lastVisit 的單獨 Cookie,而能夠建立一個名爲 userInfo 的 Cookie,其中包含兩個子鍵 userName 和 lastVisit。cookie
您可能會出於多種緣由來使用子鍵。首先,將相關或相似的信息放在一個 Cookie 中很方便。此外,因爲全部信息都在一個 Cookie 中,因此諸若有效期之類的 Cookie 屬性就適用於全部信息。(反之,若是要爲不一樣類型的信息指定不一樣的到期日期,就應該把信息存儲在單獨的 Cookie 中。)app
帶有子鍵的 Cookie 還可幫助您限制 Cookie 文件的大小。正如前面「Cookie 的限制」一節中所提到的,Cookie 一般限制爲 4096 字節,而且每一個站點最多可存儲 20 個 Cookie。使用帶子鍵的單個 Cookie,使用的 Cookie 數就不會超過度配給站點的 20 個的限制。此外,一個 Cookie 會佔用大約 50 個字符的系統開銷(用於保存有效期信息等),再加上其中存儲的值的長度,其總和接近 4096 字節的限制。若是存儲五個子鍵而不是五個單獨的 Cookie,即可節省單獨 Cookie 的系統開銷,節省大約 200 字節。dom
默認狀況下,一個站點的所有 Cookie 都一塊兒存儲在客戶端上,並且全部 Cookie 都會隨着對該站點發送的任何請求一塊兒發送到服務器。也就是說,一個站點中的每一個頁面都能得到該站點的全部 Cookie。可是,能夠經過兩種方式設置 Cookie 的範圍:佈局
將 Cookie 的範圍限制到服務器上的某個文件夾,這容許您將 Cookie 限制到站點上的某個應用程序。測試
將範圍設置爲某個域,這容許您指定域中的哪些子域能夠訪問 Cookie。spa
默認狀況下,Cookie 與特定域關聯。例如,若是您的站點是 www.contoso.com,那麼當用戶向該站點請求任何頁時,您編寫的 Cookie 就會被髮送到服務器。(這可能不包括帶有特定路徑值的 Cookie。)若是站點具備子域(例如,contoso.com、sales.contoso.com 和 support.contoso.com),則能夠將 Cookie 與特定的子域關聯。若要執行此操做,請設置 Cookie 的 Domain 屬性Response.Cookies["domain"].Domain = "support.contoso.com";code
Request.Cookies["userName"].Value對象
HttpCookie aCookie = Request.Cookies["userName"];
subkeyName = Server.HtmlEncode(aCookie.Values.AllKeys[j]);
subkeyValue = Server.HtmlEncode(aCookie.Values[j]);
在嘗試獲取 Cookie 的值以前,應確保該 Cookie 存在;若是該 Cookie 不存在,將會收到 NullReferenceException 異常。
因爲不一樣的瀏覽器存儲 Cookie 的方式不一樣,所以,同一計算機上的不一樣瀏覽器沒有必要可以讀取彼此的 Cookie。例如,若是使用 Internet Explorer 測試一個頁面,而後再使用其餘瀏覽器進行測試,那麼後者將不會找到 Internet Explorer 保存的 Cookie。即cookie不能跨瀏覽器。
建立一個與要刪除的 Cookie 同名的新 Cookie,並將該 Cookie 的到期日期設置爲早於當前日期的某個日期。當瀏覽器檢查 Cookie 的到期日期時,瀏覽器便會丟棄這個現已過時的 Cookie。