springboot 前后端分离项目,前端http访问后端https JSESSIONID不一致导致登录后又提示未登录,谷歌浏览器通过设置samesite为disable后可解决
初步解决思路在网上也找了很多方法试了
1、通过springboot设置samesite为none,这种方式测试环境前端为http访问后端的http接口,可以解决该问题,但是对正式环境为前端http访问后端https接口无效,代码如下:
@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setUseHttpOnlyCookie(false);
cookieSerializer.setSameSite("None");
cookieSerializer.setCookiePath("/");
cookieSerializer.setUseSecureCookie(true);
return cookieSerializer;
}
2、在后端nginx设置proxy_cookie_path / "/; httponly; secure; SameSite=None";一样没效果
3、整个通过调试前后端的JSESSIONID,发现两者不一致导致登录后系统又返回首页的登录页面
4、前后端的相关内容
前端浏览器查看的sessionID:
5021667194EEE15904E6CAD6AE85FDB3
后端通过日志sessionID:F86D0670D7952A789AD966F6D4E88581
问题到此处就无法往下进行了,不知道还能从哪方面入手,通过浏览器设置samesite后可正常访问,但是nginx后端设置samesite为none,这样还是无法解决该问题
整个项目环境在linux下,前后端分离部署在不同服务器,同时前后端都用nginx分别代理