由 Session 和 Cookie 的区别说起
Session 和 Cookie 有什么區別?
最近面試被問到這個問題,和面試官一番討論了解到面試官心里的答案后,我不太滿意。
面對上面的問題,如果是剛畢業時的我,一定會毫不猶豫說出 Cookie 是存在客戶端的,Session 存在服務器這個比較“標準”的答案。
現在么,我不打算探討上面的問題,而是打算抓著 Session 說一說。
抽象層面,Session 的意義是會話。既然是會話,那就意味著每一次交流是有語境的,也就是有上下文的。
要做到這點,我們需要想辦法保持(存儲)會話的狀態。
于是很自然的,我們想到下面的方案。
客戶端持有一個門牌號,把會話信息存儲在服務端,每次客戶端都會帶著鑰匙發起請求,服務器通過門牌號,領客戶端進入房間,就可以開始會話了。
那么客戶端的門牌號存放在哪里呢?
在單頁應用出現以前,所有數據都是通過服務器寫進頁面里,然后交給瀏覽器顯示的,并且也沒有 LocalStorage, SessionStorage 這樣的存儲空間供同一個域名下的前端頁面們交流,于是這個門牌號就只能存放在 Cookie 里了。這大概就是 Session 和 Cookie 唯一的交集了。
如今,選擇的余地大了很多。我們可以把門牌號放在 LocalStorage, SessionStorage 里,如果是單頁應用的情況,還可以存放在內存里。
甚至,我們可以把整個會話用的房間也丟在客戶端,如果不涉及機密事項的話。
所以 Session 只是一個抽象層面的技術概念,具體實現可以有很多種方案,使用 Cookie 只是其中一種,盡管最早設計出 Cookie 的原因或許正是這個。
以上。
本著討論一定要出結果的原則,我還是給出開頭拋出的問題的答案吧:
Session 跟 Cookie 的區別就像是 Java 跟 JavaScript,所以不要再提這個問題了。
轉載于:https://www.cnblogs.com/LoadingChan/p/5051041.html
總結
以上是生活随笔為你收集整理的由 Session 和 Cookie 的区别说起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构之图的存储结构:邻接多重表
- 下一篇: 12月16号 双链表