java web跨域访问导致session丢失

Summer凌枫 发布于 2018/03/21 16:29
阅读 2K+
收藏 0

有A(localhost:8080)、B(localhost:8081)两个系统,
已使用tomcat-redis-session-manager进行session同步,
不跨域时session同步正常,以下跨域场景导致session丢失:
在A上登录成功立即跳转B页面,B页面上有调A系统的后端接口,此时出现跨域问题。
解决跨域问题在A中添加filter:


        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        response.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨域


我用debug调试发现,A系统接收到B系统的调用接口请求时,request中并没有把session带过来,如果不跨域,B系统初次调用B系统上接口,request中也带有session的。

注意:是A系统登录,但浏览器上A和B都是带有sessionId的,但B跨域访问A时,A接收到B的请求中没有session
所以,我能弄明白的是:
1.什么原因导致跨域访问session丢失.
2.如何解决这个问题

加载中
0
w
wangan_0601
我的理解是sessionid是以kookei形式保存的,存在作用于问题,即A域名下的kookei在b下是没用的,所以在请求b的时候没有session的 解决办法:session同步不是用同步插件,自己写串入redis,在b中通过key值查询
S
Summer凌枫
我想应该是cookie的domain和path的原因,相同ip不同端口是不是domain不一致?
0
理工男海哥
理工男海哥

我们的项目,不用session已经很多年。

返回顶部
顶部