session和cookie

山有木xi發表於2020-02-25

session和cookie有什麼區別呢?

  • 由於HTTP協議是無狀態的協議,所以服務端需要時時記錄使用者的狀態,就需要用某種機制來識別具體的使用者

  • session是一個存在於伺服器上的類似一個雜湊表格的檔案。裡面存有我們需要的資訊,在需要時可以從裡面取出資訊。可以將其視為一個大型的map,裡面儲存使用者端sessionID,使用者向伺服器傳送請求時會帶上這個sessionID,取出相應的值

  • session應用場景:購物網站中當你點選“加入購物車”按鈕,由於HTTP協議無狀態,所以並不知道哪個是使用者操作的,這時需要為特定的使用者建立了特定的session,用於標識,跟蹤使用者,這樣才知道將哪些物品放入購物車,這個session是放入伺服器端的。在伺服器端中儲存session的方法很多,有記憶體、資料庫、檔案等。叢集的時候也要考慮session的專一,在大型網站,也會有相應的專門的session伺服器叢集,用來儲存使用者會話,這個時候session資訊放在記憶體中,使用一些快取技術來放session,例如:Memcached

  • cookie應用場景:當登入網站時,下次希望這個網站能記住自己的賬號,那麼就需要建立一個本地cookie。每次HTTP請求的時候,客戶端都會傳送相應的cookie資訊到伺服器端。大多數都用cookie實現session跟蹤,即第一次建立session的時候再cookie裡面記錄sessionID,此後每次請求都會把這個ID發往伺服器端,伺服器端就知道該處理什麼了,如果瀏覽器禁用了cookie,則需要URL重寫進行會話跟蹤,就是每次HTTP互動的時候,URL後面會被附加以上,例如:sid=123456  這樣的引數,服務端依此來識別使用者

  • cookie與session一般認為是兩個獨立的東西,session採用的是伺服器端保持狀態的方法,cookie採用的客戶端保持狀態的方法 但是,在禁止cookie後,session也不能實現,因為session是用sessionID來確定當前對話所對應的伺服器session,而sessionID是透過cookie傳遞的,禁用cookie相對於失去了sessionID,也就無法得到session了,此時需要用URL或者隱藏表單傳遞sessionID

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2677185/,如需轉載,請註明出處,否則將追究法律責任。

相關文章