关于解决Chrome新版本中cookie跨域携带和samesite的问题处理

本文介绍了如何解决Chrome版本67及以上中关于Cookie跨域和SameSite问题。提供了两种解决方法,包括在配置类中设置Cookie属性以及复写HttpServletResponse的相关方法。此外,还详细阐述了严格模式和宽松模式的Cookie行为,并提到了在Chrome版本51~66中的兼容性问题及其解决方案。项目依赖方面,为了实现session共享,需要引入特定的库。
摘要由CSDN通过智能技术生成

参考资料: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 
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值