由於先後端分離的開發和之前普通的jsp開發有所區別,前端使用的是html頁面,然後臺只提供了ajax訪問的數據接口,因此一直對後臺session中的值何時過時感興趣。今天關於session中的值在何時纔會過時作了一個實驗。html
我在後臺提供了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自定義參數如:java
$.ajax({
url:url,
// 加上這個參數就能夠了,容許跨域訪問攜帶cookie
xhrFields: {
withCredentials: true
},
crossDomain: true,
success:function() {
},
error:function() {
}
});
複製代碼