由于先后端分离的开发和之前普通的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() {
}
});
复制代码