APS.NET Cookie,aps.netcookie

來源:互聯網
上載者:User

APS.NET Cookie,aps.netcookie

Cookie 提供了一種在 Web 應用程式中儲存使用者特定資訊(如記錄或使用者喜好設定)的方法。Cookie 是一小段文本,伴隨著請求和響應在 Web 服務器和用戶端之間來回傳輸。Cookie 包含每次使用者訪問網站時可由 Web 應用程式讀取的資訊。


1. 寫Cookie

瀏覽器管理用戶端電腦上的 Cookie。使用 HttpResponse 對象可向用戶端發送 Cookie,該對象會公開稱為 Cookies 的屬性。任何需要 Web 應用程式發送到瀏覽器的 Cookie 都必須添加到此集合中。編寫新 Cookie 時,必須指定 Name 和 Value。每個 Cookie 必須有一個唯一的名稱,這樣在以後當瀏覽器隨同請求發送 Cookie 時,Web 應用程式就可以標識該 Cookie。

預設情況下,Cookie 由位於同一域中的所有頁面共用,但可以通過設定 Cookie 的 Path 屬性將 Cookie 限制在網站中的特定子檔案夾。若要允許應用程式的所有檔案夾中的所有頁面都檢索一個 Cookie,請從應用程式根資料夾中的版面設定該 Cookie,但不要設定 Path 屬性。
如果不指定該 Cookie 的到期限制,則該 Cookie 將不會保留在用戶端電腦上,當使用者會話到期時該 Cookie 即到期。
Cookie 僅能儲存 String 類型的值。在將任何非字串值儲存到 Cookie 中之前,必須將它們轉換為字串

HttpCookie myCookie = new HttpCookie("Cooker");myCookie["name"] = "zzh";myCookie["today"] = "friday";myCookie.Expires = DateTime.Now.AddDays(1);//myCookie.Expires.AddDays(1);Response.Cookies.Add(myCookie);//Response.AppendCookie(myCookie);myCookie.Domain = "abc.com"; //指定範圍abc.com和子網域名稱如a.abc.com可用myCookie.Path = "/admin"; //只能用於 admin 檔案夾或虛擬根目錄中的頁面

2. 讀Cookie

出於安全原因,您只能讀取屬於同一域的頁所設定的 Cookie。如果已設定 Cookie 的 Path 屬性,則只有該域路徑中的頁和子檔案夾能夠使用該 Cookie。
在讀取特定 Cookie 值時,請測試該 Cookie 是否存在以及它是否具有值,否則將發生異常。
Cookie 中的所有值都作為 String 類型儲存,因此若要將 Cookie 值作為其他資料類型使用,必須對值進行相應地轉換。

if (Request.Cookies["Cooker"] != null){    string Cooker;    if (Request.Cookies["Cooker"]["name"] != null)    { Cooker = Request.Cookies["Cooker"]["name"]; }}

3. 刪Cookie

不能直接刪除使用者電腦中的 Cookie。但是,可以通過將 Cookie 的到期日設定為過去的日期,讓使用者的瀏覽器來刪除 Cookie。當使用者下一次向設定該 Cookie 的域或路徑內的頁發出請求時,瀏覽器將確定該 Cookie 已到期並將其移除。

調用 Cookies 集合的 Remove 方法可從伺服器端的集合中移除 Cookie,使 Cookie 不會被發送至用戶端。但是,如果用戶端已存在 Cookie,則該方法無法從用戶端將其移除。

if (Request.Cookies["Cooker"] != null){    HttpCookie myCookie = new HttpCookie("Cooker");    myCookie.Expires = DateTime.Now.AddDays(-1d);    Response.Cookies.Add(myCookie);}
迴圈刪

HttpCookie aCookie;string cookieName;int limit = Request.Cookies.Count;for (int i=0; i<limit; i++){    cookieName = Request.Cookies[i].Name;    aCookie = new HttpCookie(cookieName);    aCookie.Expires = DateTime.Now.AddDays(-1);    Response.Cookies.Add(aCookie);}


4. 改Cookie

不能直接修改 Cookie。更改 Cookie 的過程涉及建立一個具有新值的新 Cookie,然後將其發送到瀏覽器來覆蓋用戶端上的舊版本 Cookie。下面的程式碼範例示範如何更改儲存使用者對網站的訪問次數的 Cookie 的值

int counter;if (Request.Cookies["counter"] == null)    counter = 0;else{    counter = int.Parse(Request.Cookies["counter"].Value);}counter++;Response.Cookies["counter"].Value = counter.ToString();Response.Cookies["counter"].Expires = DateTime.Now.AddDays(1);

5. Cookie安全

不要將任何關鍵資訊儲存在 Cookie 中。例如,不要將使用者的密碼儲存在 Cookie 中,即使是暫時儲存也不要這樣做。通常,不要將任何資訊儲存在 Cookie 中,因為一旦它被假冒,就會危及您的應用程式的安全。而是在 Cookie 中儲存對資訊在伺服器上的位置的引用。
將 Cookie 的到期日期設定為可接受的最短實際時間。儘可能避免使用永久 Cookie。
考慮對 Cookie 中的資訊加密。
考慮將 Cookie 的 Secure 和 HttpOnly 屬性設定為 true。


Cookie.Secure=true 使 Cookie 只能在使用安全通訊端層 (SSL) 的串連上傳輸。SSL 並不能防止儲存在使用者電腦上的 Cookie 被讀取或操作,但可防止 Cookie 在傳輸過程中被讀取,因為 Cookie 已被加密。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.