因為前後端分離的開發和以前普通的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() {
}
});
複製程式碼