httpsession過期時間

會Coding的猴子發表於2019-02-20

因為前後端分離的開發和以前普通的jsp開發有所區別,前端使用的是html頁面,而後臺只提供了ajax訪問的資料介面,所以一直對後臺session中的值什麼時候過期感興趣。今天關於session中的值在什麼時候才會過期做了一個實驗。

我在後臺提供了2個介面

@GetMapping("/getSessionValue")
@ResponseBody
public void d1(HttpSession session) {
    // 列印session中的值
    System.out.println(session.getAttribute("user"));
}

@GetMapping("/setSessionValue")
@ResponseBody
public void d2(HttpSession session) {
    // 向session中儲存資料
    session.setAttribute("user", "dagger");
}
複製程式碼

最後發現如果html頁面和java專案是在同一個ip和埠下執行的,那麼session中的值是在關閉瀏覽器後才銷燬的。
如果,html頁面和java專案不是在同一個埠下執行的,那麼每一次ajax請求都只代表一次連線,即下次同樣的html頁面再次請求後臺的介面時,session都不是同一個了。可以採用redis來儲存session的方式。 在ajax自定義引數如:

$.ajax({
    url:url,
    // 加上這個引數就可以了,允許跨域訪問攜帶cookie
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true,
    success:function() {
    },
    error:function() {
    }
});
複製程式碼

相關文章