Session 和cookie機制詳解

2022-08-29 18:27:13 字數 2733 閱讀 5845

參考:

一、session是什麼?

瀏覽器開啟乙個網頁,採用的是http協議。http協議是無狀態的,即這一次請求和上一次請求是沒有任何關聯的。

這種無狀態的好處是:響應速度快。

例如,在登入頁面登入之後,其他頁面也希望保持登入狀態,但是不同的頁面也是不同的請求,不同請求無關,因此無法單純判斷是否已經登入了。

因此,cookie技術出現了,可以解決這個問題。然而cookie是客戶端技術,使用者可見,可以隨意修改,很不安全。

最後,session會話機制出現了。

2.session是什麼?

二、session 的建立,刪除和儲存。

2.1 session的建立

session是在伺服器端程式執行中被建立的。建立的語句是httpsession session=request.getsession().

session被建立的同時會生成乙個唯一的sessionid。這個sessionid會被傳送到客戶端,寫在cookie中。

當客戶端再次傳送請求時,會在請求頭上加上這個sessionid。伺服器收到請求之後會依據這個sessionid在記憶體找到這個全域性session,再次使用。

注意:1.這個sessionid是整個session機制的核心。

2.session的內容是被儲存在伺服器端的。被傳送到客戶端的只有sessionid。

3.sessionid的生成演算法:隨機數+時間+jvmid  (jvmid都是唯一的,因此sessionid一定是唯一的)

2.2 session的刪除

session並不會因為關閉瀏覽器而被刪除。

session生成之後,只要使用者繼續訪問,伺服器就會更新session最後被訪問的時間,並維護該session。即使用者的session活躍了一次。

為了防止記憶體溢位,伺服器會把長時間沒有活躍的session從記憶體中刪除。這個時間就是session的超時時間。因此,超過了超時時間沒有訪問伺服器,session就會被刪除。

session被關閉的情況:

1.超時

2.呼叫方法httpsession.invalidate()

3.程式關閉;

2.3 session的儲存

session被儲存在伺服器端的記憶體中,不過也可以通過特殊的方式持久化管理。

如果session的內容過於複雜,當有大量使用者訪問的時候,就會容易導致記憶體溢位,因此session的內容應該盡量精簡。

三、cookie是什麼?

由於http是無狀態協議,伺服器無法從網路連線上確定使用者的身份。所以服務端給每個客戶端乙個標識(通行證)。

伺服器通過該標識來確定客戶端的身份。cookie實際上是一小段文字資訊。

cookie的工作原理:

客戶端向伺服器端傳送請求,伺服器使用response向客戶端頒發乙個cookie。

客戶端儲存該cookie。當再次傳送請求時,cookie被一同提交給伺服器。

伺服器檢查該cookie,以此來辨認使用者的狀態。

四、cookie的建立,刪除,修改。

4.1 cookie的建立

cookie cookie = new cookie("username","helloweenvsfei");   // 新建cookie

cookie.setmaxage(60);                             // 設定生命週期為60秒,不能為負數

response.addcookie(cookie);                    // 講該cookie頒發給客戶端

4.2 cookie 的有效期

cookie.setmaxage();   

引數為正 :多少時間之後cookie失效,並會被持久化到對應的cookie檔案中。

引數為負: 為臨時性cookie,不會被持久化到cookie檔案中,只暫時被儲存到瀏覽器記憶體中,

瀏覽器關閉之後就會消失。

引數為零:表示刪除該cookie。

4.2 cookie的刪除

如果要刪除某個cookie,只需要新建乙個同名的cookie,並將maxage設定為0,

並新增到response中覆蓋原來的cookie。

4.3 cookie 的修改

如果要修改某個cookie,只需要新建乙個同名的cookie,新增到response中覆蓋原來的cookie。

五、session和cookie的區別

1.session是在服務端記錄客戶端狀態的機制。cookie是在客戶端記錄客戶端狀態的機制。

2.cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

session是在伺服器端存放了「使用者檔案表」,客戶來訪,查客戶的檔案。

cookie是給客戶頒發通行證,客戶來訪,檢查客戶身上的通行證。

3.session更安全。

六、session和cookie的使用案例。

session:保持登入狀態。

永久登入。把使用者名稱和密碼儲存在cookie中。下次訪問時,和資料庫比較。

cookie和session和token是什麼?

什麼是session?什麼是cookie?什麼是token?1 cookie?由於http是一種無狀態協議,伺服器沒有辦法單單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie cookie實際上是一小段的4k文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用re...

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...