cookie和seesion的區別和聯繫
今天來聊聊cookie和session的區別和聯繫.首先先確定一個各自的定義吧:
- cookies: 網站用於鑒別用戶身份和追蹤用戶登錄狀態. 存在於瀏覽器端的一小段文本數據
- session: 中文稱之為會話. 可以理解成一系列動作. 在web中. session是存在瀏覽器端用戶儲存用戶的屬性和配置資訊. 這樣在網頁跳轉時. 全局變數就會一直存在
瀏覽器中cookie和session的並行使用和生成過程: 比如在一個登錄介面中. 瀏覽器訪問網址. 一般會返回一個set-cookie. 瀏覽器會將該值存成本地的cookie數據. 在下一次訪問時. 瀏覽器會自動將cookie的值攜帶並發送給網站的伺服器. cookie中攜帶的session ID就會在伺服器中找到對應的session來判斷用戶狀態是否正常. 如果正常. 那麼伺服器就會返回給用戶登錄之後才能看到的資訊, 如果不正常, 那麼就會返回錯誤資訊或者跳轉至登錄介面重新登錄. session和cookie一個在瀏覽器端. 一個在伺服器端. 二者需要相互配合才能實現登錄效果.
常見誤區: 在討論session的機制時. 有人認為瀏覽器關閉. session就會對應被刪除或消失. 其實這是個錯誤的說法:
其一是cookie在生成時伺服器已經設置好了再瀏覽器中的有效時間expires/max_age. 到了一定時間. 伺服器會自動認為用戶結束了活動. 刪除cookie對應的session以節約資源.
其二是伺服器並不知道你是否關閉了瀏覽器. 所以不存在瀏覽器關閉導致session消失. 而恰恰是由於瀏覽器關閉並不會導致session被刪除. 所以伺服器設置了失效時間去回收session資源.