再談session 和 cookie的差異

我們都知道 session是存儲在服務器端的,cookie是存儲在客戶端的;

他們兩者之間又有什麼聯繫呢?這點要先從HTTP先說起。

HTTP協議是一種無狀態的 通信協議 。那麼這就以爲着 客戶端按道理是需要每次請求之前都要和服務器做連接的。
但是每次都進行這種連接,會非常耗時,並且這些重複的網絡請求的意義都不大,所以如何避免這些重複的工作就成爲了聰明人們發揮聰明的地方了。

cookie的特點就是比較大,可以儲存一些信息,比如數據。
session一般保存的都是用戶信息之類的數據。

在客戶端請求服務器的這個過程中,請求到了服務器端時,Tomcat或者jetty之類的容器會生成一個:JsessionID。
這個ID號 是不唯一的,大部分的session機制都會將這個JsessionID 保存到cookie當中去。同時session中也有這個JsessionID。

然後又因爲瀏覽器中的cookie它是保存到 計算機的硬盤中的,所以就算我們關閉了瀏覽器只要不人爲的清空瀏覽器中的緩存cookie,那麼瀏覽器按道理就會一直保存着這個JsessionID,只要通過這個JsessionID就能找到 這個用戶的session信息。

但是如果你的計算機處於開機狀態又沒有鎖屏,結果別人打開了你的瀏覽器,就可以直接獲取你的一些信息這樣也太不安全了。所以服務器端也會對這個session進行一個 時間限制,一般是30分鐘 可以在web.xml中設置。

30分鐘過後服務器會怎麼處理這個信息呢?
當距離客戶端上一次使用session的時間超過這個失效時間時,服務器就可以認爲客戶端已經停止了活動,纔會把session刪除以節省存儲空間。

以前只是知道個大概,後來仔細點把這個事給想清楚了,很簡單的知識,但又很基礎很重要的知識,還是有必要記一記的

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