1. <em id="yud1w"><acronym id="yud1w"><u id="yud1w"></u></acronym></em>
      
      
      <button id="yud1w"></button>

      python教程

      當前位置:首頁?>?計算機底層基礎?>?當前文章

      計算機底層基礎

      cookie與session是什么?有何關系

      2021-11-17 87贊 老董筆記
      每篇文章努力于解決一個問題!更多精品可移步文章底部。

        一篇文章通常只有1個主題,本文的主題就是理清cookie和session的概念及關系,至于一些關聯性內容如http協議,cookie和session的優缺點等不過多解釋。

        為什么有cookie和session

        http協議是無狀態的,換言之就是沒有記性,1個人請求了A頁面,然后再請求B頁面,服務器是不知道這是同1個人的,服務器只知道這是1次請求。這樣就沒有辦法標記用戶,不知道1個用戶再網站都干了些什么事。為了解決這個問題,相繼誕生了cookie和session。

        cookie是什么,看一個流程

        1、服務器生成一些數據,數據的格式如{'key1':'value1','key2':'value2'},這些數據被成為cookie。

        2、在客戶端(瀏覽器)訪問1個站點時,這些數據通過響應頭發給瀏覽器,瀏覽器可以自動保存這些數據。

        3、瀏覽器再次請求這個站點的網頁時就在請求頭里帶上這些數據。

        4、服務器可以獲取瀏覽器請求頭的數據,通過這些數據就知道哪些請求屬于同一個人,即服務器通過cookie數據實現了用戶標記!

        細節方面,服務器可以設置設置cookie的有效期(小0或者不設置會存在緩存瀏覽器關閉就失效,大于0則會存儲到硬盤,于0代表立刻失效);服務器可以指定特定url形式設置cookie。綜合看下來,服務器生成cookie、發送cookie給瀏覽器、獲取cookie、打印cookie。

        瀏覽器可以獲取cookie、保存cookie、帶上cookie去請求,瀏覽器可以自行設置禁止保留cookie,但是不會影響服務端給發送cookie,但是瀏覽器禁止cookie后很多站點的一些功能無法使用!

        session是什么

        服務器生成一個session對象,這個對象里包含著1個特別的數據,其格式如{'sessionid':'xxxxxxxxxx'},讓這個數據作為cookie的一個內容組成部分通過響應頭發給瀏覽器,下一次瀏覽器請求站點時再請求頭攜帶上sessionid,服務器就知道這是哪個用戶,這個sessionid在站點的一系列行為服務器會記錄并且存儲到服務器上。這樣只根據1個sessionid即可標識用戶。

        有了cookie為什么還要有session

        1、安全方面:

        cookie存在客戶端不安全,session數據存儲在服務端比較安全,sessionid的值是通過一些算法生成的,獨一無二。客戶端自己偽造1個值但是服務端不認

        2、其他方面

        cookie只能保管ASCII字符串,需要通過編碼方式存儲Unicode字符或者二進制數據,且存儲容量較小。session數據存儲在服務器,存儲容量大小沒有限制,存儲的數據類型也沒有限制。

      文章評論

      cookie與session是什么?有何關系文章寫得不錯,值得贊賞
      国产99视频精品免视看6