前后端分离跨域存在sessionid不一致

发布时间:2022-07-07 浏览次数:3082 文章来源:个人博客

springboot后端

vue为前端

axios作为请求库


情景:登录验证码失效,sessionid值每次不一样。


前端发送请求至后端(跨域),后端提取到的sessionid均为空,这样造成了每次都向前端set新的sessionid,通过set-cookie可看到。

按照网上说法,设置axios允许跨域:

withCredentials:true,

后端设置允许接收跨域请求携带cookie:

HttpServletRequest reqs = (HttpServletRequest) req;
String allowOrigin = reqs.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin",allowOrigin);
//允许跨域cookies
response.setHeader("Access-Control-Allow-Credentials", "true");

以上均设置后问题依然存在!

后来观察请求报文相应,发现后端每次给前端发送set-cookie时候,均有个黄色感叹号!

根据提醒内容,浏览器跨域把set-cookie给拦截了!

SameSite这个引起的!

因此,要解决问题得从这里入手,百度相关知识,大多是把浏览器设置关闭,但用户怎么可能接受呢。

解决(系统通过shiro认证,在配置cookie里面增加):

cookie.setSameSite(Cookie.SameSiteOptions.LAX);
cookie.setSecure(true);


key-word
sessionid不一致