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;
    }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM