Spring Session 跨域时 Cookie SameSite 问题
SameSite
是一种新的cookie
属性值,用来防止CSRF
攻击,具体可看:
https://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html
它有两个属性
Strict
:严格模式,完全禁止第三方 Cookie
,跨站点时,任何情况下都不会发送 Cookie
。
Lax
:宽松模式,允许Get
请求的第三方Cookie
,其他请求依然禁止。
Spring-session
默认把SameSite
设置成Lat,使用spring session
进行session
管理,当其他系统需要跨域请求这个系统时就会出现每一次请求的SESIONID
都会变得情况。
需要对生成的cookie
进行修改,去掉SameSite
属性或者改为None
@Bean
public CookieSerializer httpSessionIdResolver(){
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setCookieName("token");
cookieSerializer.setUseHttpOnlyCookie(false);
cookieSerializer.setSameSite(null);
return cookieSerializer;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步