spring boot中一直刷新一个请求得到的sessionid会变化

controller中的代码:
@RequestMapping(value = "/sessions", method = RequestMethod.GET)
public Object sessions(HttpServletRequest request) {
Map sessionIdPortMap = new HashMap();
// 获取session信息
sessionIdPortMap.put("sessionId:", request.getSession().getId());
sessionIdPortMap.put("服务器端口:", request.getServerPort());
return sessionIdPortMap;
}

请求:
http://localhost:8004/sessions

两次请求一样,sessionId不同:
{
"sessionId:": "c8636f78-6a04-48f7-a9b6-c452108d74f3",
"服务器端口:": 8004
}

{
"sessionId:": "9cee7886-b85f-4078-9310-b1b580403e7d",
"服务器端口:": 8004
}

这种配置代码也配了,没用:
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

@Override
public void addCorsMappings(CorsRegistry registry) {
    System.out.println("我是MyWebConfig跨域");
    // 设置允许跨域的路径
    registry.addMapping("/**")
            // 设置允许跨域请求的域名
            .allowedOrigins("*")// 设置跨域访问的域名,如果是*,默认都可以访问。
            // 是否允许证书 不再默认开启
            .allowCredentials(true)// 设置是否允许客户端发送cookie信息。默认是false
            // 设置允许的方法
            .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
            // 跨域允许时间
            .maxAge(3600);
}

}

哪位大神可以解决呀!!!

5个回答

问题刚刚自己找到问题解决了,关键代码注释掉了,真的是自己给自己挖坑,不是跨域的问题

Balabala_0
Balabala_0 无语了,自己解决了问题,解决方法到是贴出来啊
3 个月之前 回复
zhaokejin521
筱进GG 你特么的,关键代码是啥,我凑
11 个月之前 回复

如果是前后端分离(前后端仅端口不同也算)的项目,首先考虑跨域问题,可参考https://www.cnblogs.com/gyli20170901/p/9354431.html
,如果不是,把浏览器的F12信息发出来看看吧

qq_38208327
六一真人 粘贴的好乱。。,在响应头中有x-auth-token: aaaba581-8e19-4599-bc30-cfdc1a3f8195,但是在请求中没有sessionid,浏览器里也没有存储sessionid,不知道为啥
一年多之前 回复
qq_38208327
六一真人 Request URL: http://localhost8004/sessions Request Method: GET Status Code: 200 Remote Address: [::1]:8004 Referrer Policy: no-referrer-when-downgrade Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: x-requested-with Access-Control-Allow-Methods: HEAD, POST, GET, OPTIONS, DELETE, PUT Access-Control-Max-Age: 3600 Content-Type: application/json;charset=UTF-8 Date: Tue, 05 Mar 2019 12:00:05 GMT Transfer-Encoding: chunked x-auth-token: aaaba581-8e19-4599-bc30-cfdc1a3f8195 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cache-Control: max-age=0 Connection: keep-alive Host: localhost:8004 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36
一年多之前 回复

检查一下浏览器请求时,有没有带上session请求。没有的话,就还是跨域问题

qq_38208327
六一真人 确实没有,因为浏览器里面没有sessionid这个缓存
一年多之前 回复

1、sessionId不同,是因为“没有就创建一个新的”机制。
2、检查浏览器cookie里有没sessionId?
3、查spring boot是否依赖spring session?过滤器是否开启cookie获取sessionId?(默认是,就是不知道该架构改了没)

qq_38208327
六一真人 你说的很对,就是没有sessionid在cookie里面,那要如何解决,cookie里面为什么不存储sessionid呀,是不是浏览器需要设置什么
一年多之前 回复

request中的session是需要自己手动创建的,和spring boot 没有关系,你是不是想用spring session?

weixin_42793472
不许人间、四月天 回复六一真人: 楼主,你后来是怎么解决的?我也是这个问题,cook里面有sessionId,但是还是创建一个session,sessionId就变了
一年多之前 回复
qq_38208327
六一真人 是,我用了spring session,而且会自动往redis中存储
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐