在 Spring MVC 應用程式中,關閉應用程式瀏覽器視窗是否會結束會話?當打開一個新視窗然后開始一個新會話我的理解是否正確?
uj5u.com熱心網友回復:
首先從一些細節開始,然后在下面回答您的具體問題。
如果您有網路檢查工具,您會注意到,當您的瀏覽器第一次與服務器互動時,回應中有一個看起來像Set-Cookie: JSESSIONID=<session_id>(假設是 Tomcat)的標頭。服務器創建了一個會話并提供了該會話 ID。當請求沒有會話 ID 或會話 ID 無效時,服務器通常會創建一個新會話。此 cookie 存盤在瀏覽器的 cookie 存盤中,并將在后續請求中作為Cookie標頭發送。
如果 cookie 沒有定義過期時間,瀏覽器會將此 cookie 視為會話 cookie,它是暫時的,或者只會在瀏覽器關閉之前存在。請參閱https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie。
因此,關閉瀏覽器只會丟失會話的客戶端參考(會話 ID)。雖然服務器上的會話是孤立的(假設沒有其他東西參考會話 ID),但會話仍然非常活躍。如果沒有對該會話的進一步請求,則會話最終將超時并結束。您可以通過此屬性配置超時 - server.servlet.session.timeout。
現在回答您的確切問題:
問:關閉應用程式瀏覽器視窗是否會結束會話?
瀏覽器 cookie 存盤在關閉后將不再包含會話 ID。服務器會話將被孤立并最終超時/結束。
問:當打開一個新視窗時,就會開始一個新會話
如果瀏覽器已經打開并且您之前向服務器發出過一次請求,則打開另一個訪問服務器的視窗不會創建新會話。兩個視窗共享同一個 cookie 存盤。
但是,如果您在啟動瀏覽器行程或清除 cookie 后打開一個新視窗,則會創建一個新會話。同樣,這是由于從瀏覽器到服務器的請求不包含會話 ID。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425497.html
