Asp.Net里的Cookies


什么是cookies

    Cookies有很多種,網站上的cookie,瀏覽器的cookie,會話cookie等,cookies是存儲瀏覽器與網站訪問時的數據,是Web服務器與客戶端連接的方式之一。用戶訪問不同的站點,各個站點會向用戶的瀏覽器發送一個cookie,瀏覽器會分別存儲。實際上,cookies是一小段文本文件,發生在用戶請求和頁面在Web服務器與瀏覽器之間傳遞。

 

Cookies的用途

    Cookies很多時候被用於身份的驗證、用戶會話識別、購物車的處理。Cookies也可用於把數據從一個網頁傳值到另一個網頁。

 

使用cookies安全嗎?

    使用Cookie安全嗎? 這個問題沒有明確的答案,cookie可能被黑客竊取,獲得受害者的網絡賬戶。Cookies不能攜帶病毒也不能在主機電腦上安裝惡意軟件。然而,他們卻可以使用間諜軟件跟蹤用戶網上的瀏覽活動。

 

使用cookies

創建cookie

    有許多的方法創建cookie,我將概述 其中一些比較常用的:

 

方式一:通過使用HttpCookies

        //第一種方式

        HttpCookie TestCookies = new HttpCookie("TestCookies");

        TestCookies.Value = TextBox1.Text;

        TestCookies.Expires = DateTime.Now.AddHours(1);

        Response.Cookies.Add(TestCookies);

方式二:使用Response  

        //第二種方式

        Response.Cookies["TestCookies"].Value = TextBox1.Text;

        Response.Cookies["TestCookies"].Expires = DateTime.Now.AddDays(1);

方式三:把多個值寫入一個cookies

        //把多個值寫入一個cookies中

        Response.Cookies["TestCookies"]["AboutMe"] = TextBox1.Text;

        Response.Cookies["TestCookies"]["SurName"] = "Wen";

        Response.Cookies["TestCookies"]["FirstName"] = "Jianfeng";

        Response.Cookies["TestCookies"]["Sex"] = "Boy";

        Response.Cookies["TestCookies"]["Work"] = "Programmer";

        Response.Cookies["TestCookies"].Expires = DateTime.Now.AddDays(1);

讀取cookie

    在上述代碼中,我已經使用了3種方法來創建cookie,所以,這里有必要獲取下:

對於方法一:

     string test = Request.Cookies["TestCookies"].Value;

 

對於方法二:

     string test = Request.Cookies["TestCookies"].Value;

 

對於方法三:

     //取出多個值在同一個cookies的方法

     string test;

     test = Request.Cookies["TestCookies"]["AboutMe"];
 
     test= test + ",姓名:" + Request.Cookies["TestCookies"]["SurName"];

     test = test + " " + Request.Cookies["TestCookies"]["FirstName"];

     test = test + ",性別:" + Request.Cookies["TestCookies"]["Sex"];

     test = test + ",職業:" + Request.Cookies["TestCookies"]["Work"];
     Label1.Text
= test;

 

刪除cookie

    在上述代碼中,我已經用了三種方法來創建和讀取cookies。現在看看下面的代碼將如何刪除cookies

        if (Request.Cookies["TestCookies"] != null)
        {
            Response.Cookies["TestCookies"].Expires = DateTime.Now.AddDays(-1);

            //刷新頁面
            Response.Redirect("TestPage.aspx");
        }

 

了解HttpCookies類,它包含了所有的cookie值的集合

    我們不需要使用任何額外的命名空間,只需要引用HttpCookies,因為這個類派生自System.Web命名空間(見第一種方法)。

 

    HttpCookie類有一些常用的屬性:

    • Domain :獲取或設置將此 Cookie 與其關聯的域。
    • Expires :獲取或設置此 Cookie 的過期日期和時間。 
    • HasKeys:獲取一個值,通過該值指示 Cookie 是否具有子鍵。 
    • Name :獲取或設置 Cookie 的名稱。 
    • Path :獲取或設置要與當前 Cookie 一起傳輸的虛擬路徑。 
    • Secure :獲取或設置一個值,該值指示是否使用安全套接字層 (SSL)(即僅通過 HTTPS)傳輸 Cookie 
    • Value :獲取或設置單個 Cookie 值。 
    • Values :獲取單個 Cookie 對象所包含的鍵值對的集合。 

 

Cookie的限制

    使用cookies有以下限制:

1.Cookies最大為4096字節;

2.只能存儲20cookie,可以使用在一個單一的網站上,如果超過20個,瀏覽器就會丟棄舊的cookies(IE將每個域增至50個);

3.用戶可以改變瀏覽器的設置,以使用或禁用cookies,所以建議檢查用戶的狀態,並提示用戶啟用cookies

 

    有時,用戶在瀏覽器禁用了cookie,而且瀏覽器上也沒有相關的提示信息來提醒啟用cookies。在這種情況下,你需要檢查用戶的瀏覽器,在網站首頁,並顯示相應的提示,或重定向到有這樣提示消息的頁面來提醒用戶。下面的代碼將檢查用戶的瀏覽器是否支持cookies

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Browser.Cookies)
        {
            //瀏覽器支持cookies,繼續coding......
        }
        else
        {
            //瀏覽器不支持cookies,那么彈出提示信息或者重定向到新頁面進行處理
        }
    }

 

 

    我建議不要把敏感信息存儲在cookies里,如果有需要的話,就加密下信息吧。

    以上就是cookiesasp.net的使用,歡迎大家一起交流。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM