淺析Cookie和Session

目錄

定義:

      1、什麼Cookie?

         創建Cookie:   

          讀取Cookie值:

        2、什麼是Session。

        創建Session

相同與不同

工作原理

        3.Cookie工作原理:

        4、Session工作原理(此原理圖借鑑視頻資料)

非常好的實例解析Cookie和Session的區別,作用


前言

         這兩天剛剛接觸新的詞彙,在很淺的層次上做一個小小的總結,讓自己加深一下印象,並且在總結過程中搜索更多相關的內容,豐富對於此知識點更廣知識面的總結和理解。接下來就從定義、區別以及工作原理幾方面進行一個小小的總結。

定義:

      1、什麼Cookie?

          Cookie:這個詞語很熟悉,英文“曲奇餅乾”,今天在學習ASP.NET是有接觸了一下。

           Cookie今天接觸了一個關於Cookie的新的概念“客戶端狀態保持” 常用用於識別用戶。cookie 是一種服務器留在用戶計算機上的小文件。每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發送 cookie。通過 ASP,您能夠創建並取回 cookie 的值。     

             cookie:一小段文本,明文。存儲在客戶端的瀏覽器內存裏面或者磁盤。cookie是跟網站相關,百度可以往客戶端寫cookie,sina也可寫cookie,但是百度只能讀取跟百度網站相關的cookie
cookie會隨着請求網站一塊發送到後臺【如果請求百度的時候,那麼就把百度的cookie放到請求報文裏面去,然後發送到後臺。】

           cookie可以設置一個Path來限制某個路徑下面的頁面纔會把cookie發送到後臺
比如:請求圖片,請求一個css、js,爲了提高性能,可以通過 path設置頁面的所在路徑,來控制cookie的發送。

          Cookie的域:瀏覽器往後臺發送數據時候,要把cookie放到請求報文裏面去,發送到後臺。 如果請求是主域頁面,子域的cookie是不會發送到後臺的。如果子域想讓請求主域頁面的時候也一塊發送到後臺,設置當前Cookie的域爲主域可以了。

          cookie是通過響應報文的方式寫到前臺。最終寫入Cookie是通過響應報文頭來的

         創建Cookie:   

namespace WebApp2._0._2020_02_25
{
    public partial class CookieDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //創建cookie的基本語法
            //Response.Cookies["cp1"].Value="itcast";
            //創建cookie並且制定過期時間
            Response.Cookies["cp2"].Value = "老虎";
            Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(3);
            //刪除cookie(給過期時間一個已經過去的時間即可  )
            Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);

            //cookie跨域問題(域名)
           // Response.Cookies["cp3"].Value = "老鼠";
            //Response.Cookies["cp3"].Domain = "xxx.com";//設置爲主域的方法
            //Response.Cookies["cp3"].Path = "/2020-02-25";//只訪問此文件夾下的文件的時候請求報文帶cookie的數據

            //Response.Cookies["cp3"].Expires = DateTime.Now.AddDays(7);
        }
    }
}

           讀取Cookie值:

namespace WebApp2._0._2020_02_25
{
    public partial class CookieDemo2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //獲取cookie的值
            if (Request.Cookies["cp2"]!=null)
            {
                //Response.Write(Request.Cookies["cp1"].Value);
                Response.Write(Request.Cookies["cp2"].Value);
            } 
        }
    }
}

CookieDemo和CookieDemo2報文中的Cookie值均爲:

並且可以查詢到延期時間爲3天(今天26日):(通過查詢報文可發現Cookie的過期時間爲2月29日,正好3天)

                        更過關於Cookie的創建和讀取等功能參考

        2、什麼是Session。

        服務端的狀態保持機制(cookie是存儲在用戶的電腦上:)可以將各種類型數據存儲到Session,最終將這些數據存儲到服務端的內存中。

   【在一般處理程序 中如果使用session必須實現的時候,需要實現System.Web.SessionState.IRequiresSessionState接口

        創建Session

namespace WebApp2._0._2020_02_26
{
    public partial class SessionDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //判斷是否提交
            if (IsPostBack)
            {
                string name = Request.Form["txtName"];
                Session["userName"] = name;
                Response.Redirect("test.aspx");
            }
        }
    }
}

當提交之後,不關閉此網址的同時打開另一個網頁,輸入相同的網址,則顯示結果一樣,因爲此時SessionID一樣

當此頁面關閉之後,再次打開此網址,可以發現此網頁內容就會不見了:因爲此時的SessionID發生了變化。【詳見下面的運行原理圖

                更多關於Session的屬性、事件和方法參考

相同與不同

          1.session其實指的就是訪問者從到達某個特定主頁到離開爲止的那段時間。 Session其實是利用Cookie進行信息處理的,當用戶首先進行了請求後,服務端就在用戶瀏覽器上創建了一個Cookie,當這個Session結束時,其實就是意味着這個Cookie就過期了。

   注:爲這個用戶創建的Cookie的名稱是aspsessionid。這個Cookie的唯一目的就是爲每一個用戶提供不同的身份認證。

          2.cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。

          3.cookie 和session的區別是:cookie數據保存在客戶端,session數據保存在服務器端。 

工作原理

        3.Cookie工作原理:

      4、Session工作原理(此原理圖借鑑視頻資料)

參考鏈接:https://zhuanlan.zhihu.com/p/100460817

                   非常好的實例解析Cookie和Session的區別,作用

 

                              歡迎各位大神斧正和點贊哦!!!

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章