You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios请求未携带已设置Cookie:Spring+React环境问题排查

Cookie未随跨域请求发送的排查与修复方案

1. 端点路径不匹配导致CORS配置失效

后端CORS配置的刷新令牌端点是/api/v*/auth/refresh-token(使用连字符-),但客户端axios请求的路径是/api/v1/auth/refresh_token(使用下划线_)。这种路径不匹配会导致请求无法命中开启了allowCredentials(true)的CORS规则,转而匹配到后续的/api/v*/**规则——而该规则未启用allowCredentials,浏览器会因安全策略阻止Cookie发送。

2. Cookie的Path属性未明确设置

当前创建ResponseCookie时未指定path,Cookie会默认绑定到设置它的请求路径(比如登录请求是/api/v1/auth/login,则Cookie的path为/api/v1/auth)。如果后续其他API请求不在此路径范围内,Cookie将无法被携带。建议显式设置path为根路径,确保所有API请求都能携带该Cookie:

ResponseCookie cookie = ResponseCookie.from("my_cookie", "my_value")
  .httpOnly(true)
  .secure(false)
  .sameSite("lax")
  .path("/") // 新增根路径配置
  .build();

3. CORS规则的覆盖问题

即使路径匹配正确,后续的/api/v*/**规则未开启allowCredentials,可能在部分场景下影响Cookie的发送逻辑。建议统一对需要携带Cookie的API开启该配置,或确保具体规则的优先级:

@Override
public void addCorsMappings(CorsRegistry registry) {
    // 修正路径匹配下划线,确保命中正确规则
    registry.addMapping("/api/v*/auth/refresh_token")
            .allowedOrigins(webAppUrl)
            .allowedMethods("GET")
            .allowCredentials(true);

    // 对所有API开启allowCredentials(根据业务需求调整)
    registry.addMapping("/api/v*/**")
            .allowedOrigins(webAppUrl)
            .allowedMethods("GET", "POST", "PUT", "DELETE")
            .allowCredentials(true);
}

4. 额外验证要点

  • 打开浏览器控制台的Application标签,确认Cookie的domain、path、httpOnly等属性是否符合预期
  • 检查CORS请求的响应头,确认Access-Control-Allow-Credentials: true是否存在
  • 确保前端请求的Origin和后端配置的webAppUrl完全一致(包括协议、域名、端口,比如http://localhost:3000不能省略协议)

内容的提问来源于stack exchange,提问作者Johni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:12:23