程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中Request.Cookies 和 Response.Cookies 的差別剖析

C#中Request.Cookies 和 Response.Cookies 的差別剖析

編輯:C#入門知識

C#中Request.Cookies 和 Response.Cookies 的差別剖析。本站提示廣大學習愛好者:(C#中Request.Cookies 和 Response.Cookies 的差別剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中Request.Cookies 和 Response.Cookies 的差別剖析正文


.NET中供給了讀寫Cookie的多種辦法,Request.Cookies 是客戶端經由過程 Cookie 標頭情勢由客戶端傳輸到辦事器的 Cookie;Response.Cookies 在辦事器上創立並以 Set-Cookie 標頭的情勢傳輸到客戶端。也就是說,一個是客戶端向辦事器端發送的來的,一個是辦事器發送到客戶真個。

第一次創立Cookies的時刻,上面的2種讀取辦法讀取到的內容是一樣:

C# 代碼


HttpCookie hc = new HttpCookie("User2");
hc["UserName"] = "mengxianhui";
Response.Cookies.Add(hc);
  
Response.Cookies["User1"]["UserId"] = "net_lover";
  
Response.Write(Request.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Request.Cookies["User2"].Values["UserName"].ToString());
Response.Write("<hr>");
Response.Write(Response.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Response.Cookies["User2"].Values["UserName"].ToString());

然則,一旦Cookie存在,再應用下面的辦法停止讀取,成果是有差異的,Response.Cookies可以立刻讀取到新的Cookie,而Request.Cookies讀取到還是上一次設置的,也就是必需經由過程客戶端向辦事器發送要求時能力讀取到。為何會有如許的差異,應當是.NET完成的成績,外面有這麼一段:
C# 代碼


if (includeResponse && (this.Response != null))
{
    HttpCookieCollection cookies = this.Response.Cookies;
    if (cookies.Count > 0)
    {
        HttpCookie[] dest = new HttpCookie[cookies.Count];
        cookies.CopyTo(dest, 0);
        for (int i = 0; i < dest.Length; i++)
        {
            cookieCollection.AddCookie(dest[i], true);
        }
    }
}

在Cookie不存在時,它應當是讀取Response.Cookies外面的Cookie了,所以第一次讀取雷同,而今後讀取分歧的緣由吧。

別的,Response.Cookies必需是在設置完後讀取,不克不及像Request.Cookies那樣隨時讀取,如在其余頁面讀取Cookies,上面的辦法就是毛病的

C# 代碼


protected void Page_Load(object sender, EventArgs e)
{
  Response.Write(Response.Cookies["User1"].Values["UserId"].ToString());
  Response.Write(Response.Cookies["User2"].Values["UserName"].ToString());
}

總結:

Request.Cookies:重要是用於獲得一切Cookie值的,包含JS、Request.Cookies和Response??.Cookies三種辦法創立的Cookie值;說到這裡,年夜家可以看出Request.Cookies既可以獲得Cookie也能夠創立Cookie,那末它創立的Cookie與Response和JS創立的Cookie有甚麼不消呢,經由過程試驗發明,經由過程Request.Cookies創立的Cookie只要?Request.Cookies能力獲得到,而其他兩種辦法是不克不及獲得的,也就是說Request.Cookies創立的Cookie只能用於.Net後台不克不及用於HTML的前台。

Response.Cookies:重要用於Cookie的創立、賦值和刪除操作,經由?Response.Cookies操作過的Cookie,一切辦法獲得到的都是被更新過的值,也就是說Response.Cookies是修正一切容器中的Cookie的值;Response.Cookies除是Cookie的最終修正者外,我們在寫代碼的時刻能夠會發明經由過程Response.Cookies也能夠獲得部門Cookie的值,經由過程試驗發明,此處獲得的Cookie值只是本次會話中且是經由過程Response.Cookies創立的Cookie,根本上沒甚麼用途。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved