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

参考资料: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 
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
Chrome浏览器从版本108开始,对于问题做出了一些改变。在此之前,浏览器是严格限制请求的,但是自从Chrome 108版本之后,浏览器默认支持通过一些的方法来解决问题。 首先,Chrome 108引入了的CORS(资源共享)规范,它通过在服务器的响应头添加一些额外的字段来指示浏览器是否允许请求。如果服务器返回的响应包含了'Access-Control-Allow-Origin'字段且值为请求的名,则浏览器将允许该请求。这样,网页开发者可以通过在服务器端设置正确的响应头来解决问题。 其次,Chrome 108还引入了一种请求方式,即Fetch API。Fetch API是一种用于代替传统的XMLHttpRequest对象的的网络请求API,它默认支持请求,并且提供了一系列的方法和选项来处理问题。通过使用Fetch API,网页开发者可以更灵活地发送和处理请求。 此外,Chrome 108还提供了一些其他的解决方案。例如,开发者可以在服务器端设置CORS策略,通过细粒度的配置来控制哪些名可以进行请求。另外,Chrome 108也支持通过在请求添加'Access-Control-Allow-Credentials'字段来允许请求携带认证信息。 综上所述,Chrome浏览器108版本以上对问题做出了一些改进和优化。通过使用CORS规范、Fetch API以及其他解决方案,网页开发者可以更轻松地处理请求,并提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值