瀏覽器每次打出 Http request的時後,瀏覽器都會發送相對應的 cookie 資料到伺服器。它的保存期限可以任意設定,如果你不主動清除的話就會一直保留在你的瀏覽器裡面,下次再重新登入網頁也是會存在,就算你關掉電腦也是一樣。
在無狀態的 HTTP 協議下,伺服器記錄使用者的狀態時用於標記使用者的機制。當你關掉網頁,session 就會消失,但其實並不是真的消失,而是你的 session ID 變了,而就算你沒有關掉網頁,過一陣子之後也會被刪除。
對於 web 開發 cookie, session 都是通用的,不管你是 java 還是 rails。 cookie 大家都知道是儲存在瀏覽器裡面。 session 你可以理解為一個使用者在訪問網站期間,瀏覽器儲存關於這個用戶的資訊,使用者與使用者都有不一樣的 session 。session 儲存是由伺服器負責,一般都是利用 cookie 在瀏覽器上存一個 session_id,然後每請求依照所儲存的 session_id 尋找相對應的 session。
Session 會存在不是沒有原因的,因為伺服器和瀏覽器並不會一直保持連線狀態,你的瀏覽器跟伺服器也不會一直更新狀態,所以伺服器並不知道瀏覽器當下的狀態。因此網站開發者,運用 Session 這個機制來解決這問題。
Session 的機制就像是你去鹹酥雞店點了雞排,因為客人很多老闆發給你一張號碼牌,在等的時間你到附近叫了飲料,回來之後老闆也不知道你是誰。所以如果你想拿雞排就得靠老闆給你的這張號碼牌,去跟老闆領雞排,老闆會根據這號碼牌確認你是顧客也可以知道你點了什麼東西,然後可以給你屬於你的雞排。