参考资料:https://www.chromium.org/updates/same-site/incompatible-clients
新版本处理方式如下
针对Chrome版本67及以上
话不多说,代码如下:
@Configuration
public class SpringSessionConfig {
@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setUseHttpOnlyCookie(false);
cookieSerializer.setSameSite("None");
cookieSerializer.setCookiePath("/");
cookieSerializer.setUseSecureCookie(true);
return cookieSerializer;
}
}
注意,这个里面的SameSite不能设为
null
,设空的话,还是会走默认值Lax
其中,SameSite
的值可以填3个:Strict
,Lax
,None
.
缺省的值为Lax
,而且当你设置其为空时,在新的Chrome中还是会给予默认值Lax
.
3个模式的介绍
Strict
严格模式
Lax
宽松模式
None
可以在第三方环境中发送cookie
在这种模式下,必须同时启用Secure
才行
Chrome版本(51~66)
在这些版本中,浏览器不接受SameSite=None
.如果套用上面的代码会发现无法登录
解决方法1
在配置类中设置SameSite=null
:
@Configuration
public