c#/ASP.NET操做cookie(讀寫)代碼示例


Cookie是存在硬盤上,IE存cookie的地方和Firefox存cookie的地方不同。不一樣的操做系統也可能存cookie的地方不同。html

不一樣的瀏覽器會在各自的獨立空間存放Cookie, 互不干涉以個人windows7, IE8爲例,  cookie存在這:c#

C:\Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Fileswindows

注意: 緩存文件和cookie文件,是存在一塊兒的, 都在這個目錄下。瀏覽器

你也能夠這樣找, 打開IE,點擊Tools->Internet Options->General Tab下的->Browsing history下的Setting按鈕,彈出的對話框中點擊View files。不一樣的網站會有不一樣的cookie文件。緩存

   在Asp.net中,讀寫Cookie是經過使用HttpCookie類來完成的,它的定義以下:安全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public  sealed  class  HttpCookie
{
     // 獲取或設置將此 Cookie 與其關聯的域。默認值爲當前域。
     public  string  Domain {  get set ; }
     // 獲取或設置此 Cookie 的過時日期和時間(在客戶端)。
     public  DateTime Expires {  get set ; }
     // 獲取一個值,經過該值指示 Cookie 是否具備子鍵。
     public  bool  HasKeys {  get ; }
     // 獲取或設置一個值,該值指定 Cookie 是否可經過客戶端腳本訪問。
     // 若是 Cookie 具備 HttpOnly 屬性且不能經過客戶端腳本訪問,則爲 true;不然爲 false。默認爲 false。
     public  bool  HttpOnly {  get set ; }
     // 獲取或設置 Cookie 的名稱。
     public  string  Name {  get set ; }
     // 獲取或設置要與當前 Cookie 一塊兒傳輸的虛擬路徑。默認值爲當前請求的路徑。
     public  string  Path {  get set ; }
     // 獲取或設置一個值,該值指示是否使用安全套接字層 (SSL)(即僅經過 HTTPS)傳輸 Cookie。
     public  bool  Secure {  get set ; }
     // 獲取或設置單個 Cookie 值。默認值爲空引用。
     public  string  Value {  get set ; }
     // 獲取單個 Cookie 對象所包含的鍵值對的集合。
     public  NameValueCollection Values {  get ; }
     // 獲取 System.Web.HttpCookie.Values 屬性的快捷方式。
     public  string  this [ string  key] {  get set ; }
}


Cookie寫入瀏覽器的過程:服務器

咱們可使用以下代碼在Asp.net項目中寫一個Cookie 併發送到客戶端的瀏覽器(爲了簡單我沒有設置其它屬性)。cookie

1
2
HttpCookie cookie =  new  HttpCookie( "MyCookieName" "string value" );
Response.Cookies.Add(cookie);


Asp.net獲取Cookie的過程:併發

咱們可使用以下代碼在Asp.net項目中讀取一個Cookie
網站

1
2
3
4
5
HttpCookie cookie = Request.Cookies[ "MyCookieName" ];
if ( cookie !=  null  )
     labCookie1.Text = cookie.Value;
else
     labCookie1.Text =  "未定義" ;

   Cookie是放在請求頭中,發送到服務端的。若是你一直刷新頁面,就能發現, 每次HTTP請求,Cookie都會被髮送。固然了,瀏覽器也不是發送它所接收到的全部Cookie,它會檢查當前要請求的域名以及目錄, 只要這二項目與Cookie對應的Domain和Path匹配,纔會發送。對於Domain則是按照尾部匹配的原則進行的。因此,我在訪問 www.09me.com 時,瀏覽器並不會將我在瀏覽 www.169it.com 所接收到的 Cookie 發出去。


刪除Cookie:

   其實就是在寫Cookie時,設置Expires爲一個【早於如今時間的時間】。也就是:設置此Cookie已通過期, 瀏覽器接收到這個Cookie時,便會刪除它們。

1
2
3
HttpCookie cookie =  new  HttpCookie( "MyCookieName" null );
cookie.Expires =  new  DateTime(1900, 1, 1);
Response.Cookies.Add(cookie);

瀏覽器對於Web服務器應答包頭中Cookie的操做步驟

1. 從Web服務器的應答包頭中提取全部的cookie。

2. 解析這些cookie的組成部分(名稱,值,路徑等等)。

3. 斷定主機是否容許設置這些cookie。容許的話,則把這些Cookie存儲在本地。


瀏覽器對Web服務器請求包頭中全部的Cookie進行篩選的步驟:

1. 根據請求的URL和本地存儲cookie的屬性,判斷那些Cookie能被髮送給Web服務器。

2. 對於多個cookie,斷定發送的順序。

3. 把須要發送的Cookie加入到請求HTTP包頭中一塊兒發送。





轉載請註明:文章轉載自:[169IT-最新最全的IT資訊]
本文標題:c#/ASP.NET操做cookie(讀寫)代碼示例

相關文章
相關標籤/搜索