跨域请求无法携带Cookie的问题

项目使用了SpringSecurity框架,登录成功后会设置cookie,cookie信息如图:
在这里插入图片描述跨域登录成功后(自动设置了cookie),后续的其他请求没有自动携带cookie。

解决

cookie的属性介绍:https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

  1. 当设置 SameSite=none 时,跨域请求才会携带 cookie
  2. 当设置SameSite=none 时,必须设置 secure=true,浏览器才会存储cookie

所以,需要在后端生成cookie时设置 SameSite=nonesecure=true
具体操作:

  • 设置 SameSite=none
import org.apache.tomcat.util.http.Rfc6265CookieProcessor;
import org.apache.tomcat.util.http.SameSiteCookies;
import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {

    @Bean
    public TomcatContextCustomizer sameSiteCookiesConfig() {
        return context -> {
            final Rfc6265CookieProcessor cookieProcessor = new Rfc6265CookieProcessor();
            // 设置Cookie的SameSite:设置为NONE,支持跨站传cookie。!!!不安全
            cookieProcessor.setSameSiteCookies(SameSiteCookies.NONE.getValue());
            context.setCookieProcessor(cookieProcessor);
        };
    }
}
  • 设置secure=true,application.yml
server:
  servlet:
    session:
      cookie:
        secure: true

reference:
Springboot应用中设置Cookie的SameSite属性

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值