zoukankan      html  css  js  c++  java
  • Asp.Net 建立和得到客戶端Cookie

        程序中需要用到Cookie,之前沒有接觸過,但耐心看完網上的尋找的資料后,終於讓程序完成了。

    建立和得到客戶端Cookie的代碼如下:

        ///<summary>
        
    ///得到Cookie
        
    ///</summary>
        
    void GetClientCookike()
        {
            
    //判斷客戶端是否有Cookie
            
    if (Request.Browser.Cookies == true)
            {
                
    //判斷是否存在指定的Cookie,不存在時創建Cookie
                
    if (Request.Cookies["ClientSign"== null)
                {
                    HttpCookie hcCookie 
    = new HttpCookie("ClientSign");
                    
    //設置Cookie的有效時間(此處設為最大時間)
                    hcCookie.Expires 
    = DateTime.MaxValue;
                    
    string sGuid = DateTime.Now.ToString("yyyyMMddHHmmssffffff");
                    
    //設置Cookie的值
                    hcCookie.Value 
    = sGuid;
                    
    //將Cookie到客戶端Cookie集合中
                    Response.Cookies.Add(hcCookie);
                }
                
    else
                {
                    
    //得到客戶端Cookie
                    
    string sRequest = Request.Cookies["ClientSign"].Value;
                    Response.Write(
    "Cookie Is " + sRequest + "<br>");
                }
            }
        }


    參考的網上資料為:
       
    http://fanshaoran.blog.bokee.net/bloggermodule/blog_viewblog.do?id=848072
    原文:
        Cookies
    用於存儲特定用戶資訊,它提供了Web程式中一種有用的方式。多年以來,javascript開發人員已經進行了有關cookie的大量工作。同樣, ASP.NET通過System.Web空間名稱也提供了cookie的訪問。雖然你不應該使用cookie來存儲一些敏感性的資料,但是,它們是處理鎖細資料的一個極好的選擇,比如顏色參數選擇或者最後一次訪問日期。

    傳遞cookies
        cookie
    是存儲在用戶端電腦的一個小檔。如果你是一個Windows用戶,可以在用戶路徑中查看Cookies路徑,即為Documents And Settings路徑。這一路徑包含這一檔案名稱的文字檔案:“username @ Web site domain that created the cookie”
    (
    用戶名稱@建立cookie的站點功能變數名稱)

    .NET System.Web空間名稱包含三個類,你可以使用它們來處理用戶端的Cookies
        HttpCookie
    :提供一個建立和操作獨立HTTP cookies的安全類型的方式。
      HttpResponse
    Cookies屬性允許用戶端cookies被操作。
       HttpRequest
    Cookies屬性允許訪問用戶端操作的cookies

      HttpResponseHttpRequest物件的Cookies屬性將返回一個 HttpCookieCollection物件,它包含著,將單獨的cookies添加到集合(collection)中,以及從集合 (collection)獲得一個單獨的cookies

    HttpCookie
        HttpCookie
    類針對于客戶存儲之用而建立的單獨 cookies。一旦HttpCookie物件被建立,你可以將其添加到HttpResponse物件的Cookies屬性中。同樣的,你可以通過 HttpRequest物件訪問現有的cookies
           
    HttpCookie類包含以下的公有屬性:
          Domain(
    功能變數名稱):獲得或設置與cookie有關的功能變數名稱,可用於限制特定區域的cookie訪問。
          Expires(
    期限):獲得或設置cookie的終止日期和時間,你可以將其設置為一個過去的日期以自動終止或者刪除cookie
          Names(
    名稱):獲得或設置cookie名稱。
          Path(
    路徑):獲得或設置cookie的虛擬路徑。這一屬性允許你限制cookie範圍,也就是說,訪問cookie只能限制於一個特定的檔夾或者路徑。設置這一屬性限制為只能訪問特定路徑和該路徑下的所有檔。
         Secure(
    安全):發信號以表示是否使用Secure Sockets Layer (SSL)來發送cookie值。
         Value(
    ):獲得或設置一個單獨的cookie值。
         Values(
    信息):返回包含在cookie中的key/value的一個集合。

           雖然這些還不是一個最詳盡的列表,但它提供了處理cookies所需要的東西。對於這些屬性的使用,以下VB.NET範例給予最好的理解:

    Dim testCookie As New HttpCookie("LastVisited")
    testCookie.Value 
    = DateTime.Now.ToString
    testCookie.Expires 
    = DateTime.Now.AddDays(7)
    testCookie.Domain 
    = "builder.com"
    Response.Cookies.Add(testCookie)
          這一代碼段建立了一個名為LastVisited的新的cookie並賦予當前日期和時間的值。同樣的cookie終止期限設置為一個星期相關的範圍為populated。一旦建立物件,通過Response.Cookies物件的Add方法就可以將物件添加到用戶端的cookies集合。HttpCookie構造函數中的方法有兩種:
    HttpCookie objectName = New HttpCookie("cookieName")
    HttpCookie objectName 
    = New HttpCookie("cookieName""cookieValue")

        同樣,Response物件包含一個SetCookie方法,這一方法可以接受一個HttpCookie物件。

    我的cookie在哪里
        一旦cookies被保存在用戶端,有多種不同的方法以提供你訪問它們。如果你知道cookie名稱,可以使用HttpResponse物件很容易地訪問它的值。以下VB.NET行顯示了與cookie有關的值:

    Request.Cookies("LastVisitied").Value
         除此之外可以通過一個HttpCookieCollection物件訪問cookies的完整列表。這就使得cookie列表可以用一個for迴圈來訪問。以下C#代碼說明了這樣的例子:
    HttpCookieCollection cookies;
    HttpCookie oneCookie;
    cookies 
    = Request.Cookies;
    string[] cookieArray = cookies.AllKeys;
    for (int i=0; I < cookieArray.Length; i++)
    {
      oneCookie 
    = cookies[cookieArray[i]];
      Response.Write(oneCookie.Name 
    + " - " + oneCookie.Value);
    }
       cookie檔存放在用戶端機器所以你的用戶可以任意刪除或更改。此外用戶還可以使cookies無效化。基於此原因,請記住不要依賴cookie資料。你應該將重要的資訊保存在伺服器──特別是一個資料庫中。
            在一個cookie中存儲關鍵資訊被認為是一種低級的程式設計,因為這些資訊很容易被洩露,原因是這些資訊位於客戶機器的一個檔中。在這一點,一種方法就是使用SSL,這是一種可以避免敏感資訊的更好方法。

    我可以使用cookies嗎?
          用戶可以在自己的流覽器上無效化
    cookie支持。你可以在自己的代碼中訪問這些設置以決定是否支持cookiesRequest物件滿足了這一想法,以下VB.NET代碼顯示了這一過程:

    If Request.Browser.Cookies = True Then
    ' 使用cookies
    Else
    '沒有cookie支持
    End If
        可以聯合代碼來使用cookie值。以下C#代碼段對cookie支持進行了測試並相應地將結果顯示在一個文本框
    if (Request.Browser.Cookies == true)
    {
        if (Request.Cookies["LastVisited1"== null)
        {
            HttpCookie newCookie 
    = new HttpCookie("LastVisited1",DateTime.Now.ToString());
            newCookie.Expires 
    = DateTime.Now.AddYears(1);
            Response.Cookies.Add(newCookie);
            this.txtName.Text = "Is this your first time?";
        }

        else

        {
            this.txtName.Text = "We haven't seen you since " +
         Request.Cookies[
    "LastVisited1"].Value;
        }
    }
    你可以將這一代碼段添加到ASP.NET頁中的Page_Load事件。

    保存資料的另一方式
        ASP.NET
    提供了保存特定用戶資料的多種方法。其中一個老方法就是cookies。對於敏感資料,雖然cookies不是最好的方法,但它是諸如顏色參數選擇、最後一次訪問日期等親和力選項(benign items)的最佳選擇。雖然這些敏感資料重要,但當用戶的電腦崩潰時資料丟失,這也不是世界的末日。

    CookieSession的關係
        1. asp.netSession可以採用cookie cookieless兩種方法,cookieless方式是將SessionID放在URL中在用戶端和服務端中來回傳遞,不需要用到cookie,在這裏不討論這個方式。
        2.
    asp.net中客戶第一次請求一個URL,伺服器給這個客戶生成一個SessionID,並以非永久性的 Cookie發送到用戶端。
        3.
    非永久性的 Cookie只有在流覽器關閉後這些Cookie才隨之消失,Session的超時判斷是這樣的過程:
            3.1
    第一次用戶端訪問伺服器,會得到一個SessionID,以非永久性的 Cookie發送到用戶端。
            3.2
    在這個流覽器關閉之前訪問這個URL,流覽器都會把這個SessionID發送到服務端,服務端根據SessionID來維持對應此客戶的服務端的各種狀態(就是Session中保存的各種值),在web應用程式中可以對這些Session進行操作。
            3.3
    服務端維護此SessionID的過期時間,IIS中可以設置Session的超時時間。每次請求都將導致服務端將此SessioID的過期時間延長一個設置的超時時間。
            3.4
    當服務端發現某個SessionID已經過時,即某個客戶已經在設置的超時時間內沒有再次訪問此站點,即將此SessionID,連同跟此SessionID相關的所有Session變數刪除。
            3.5 用戶端的流覽器未關閉前,並不知道服務端已經將這個SessionID刪除,用戶端依舊發送此SessionIDcookie到服務端,只是此時的服務端已經不認識此SessionID了,會將此用戶當做新用戶,再次分配一個新的SessionID


  • 相关阅读:
    python ipython使用
    Django ORM 操作
    Django uwsgi 基础知识
    前端 vue router 传递参数
    观察者模式和发布订阅模式
    关于重绘和回流
    Vuex入门简单示例(五)
    Vuex入门简单示例(四)
    Vuex入门简单示例(三)
    Vuex入门简单示例(二)
  • 原文地址:https://www.cnblogs.com/scottckt/p/1165598.html
Copyright © 2011-2022 走看看