httpsession过期时间

1,372 阅读1分钟

因为前后端分离的开发和以前普通的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() {
    }
});