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

React+SpringBoot 3.1.5集成时CORS Filter问题求助

解决SpringBoot 3.1.5 + React跨域CORS问题

排查与修复方案

1. 修正全局CORS配置代码

SpringBoot 3.x对CORS配置有细节要求,确保你的CorsConfig.java是如下正确格式:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        // 指定允许跨域的源(对应React的3000端口)
        config.addAllowedOrigin("http://localhost:3000");
        // 允许所有请求方法(GET/POST/PUT等)
        config.addAllowedMethod("*");
        // 允许所有请求头
        config.addAllowedHeader("*");
        // 允许携带凭证(如Cookie,按需开启)
        config.setAllowCredentials(true);

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对所有API路径生效,可根据实际接口路径调整
        source.registerCorsConfiguration("/api/**", config);
        return new CorsFilter(source);
    }
}

注意:如果你的接口路径不是/api/**,要替换为实际匹配规则,比如/**对所有路径生效。

2. 规范@CrossOrigin注解使用

如果用注解方式,要明确指定参数,避免模糊配置:

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/users")
// 明确允许的源和凭证权限
@CrossOrigin(origins = "http://localhost:3000", allowCredentials = "true")
public class UserController {
    @PostMapping("/signup")
    public String signup() {
        // 接口业务逻辑
        return "success";
    }
}

3. 检查客户端请求是否合规

  • 避免在fetch请求中设置未被允许的自定义头,若有自定义头,需在CORS配置中通过addAllowedHeader添加对应键:
    fetch('http://localhost:8080/api/users/signup', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        // 如有自定义头,需在CorsConfig中配置允许
      },
      body: JSON.stringify(userData)
    })
    
  • 不要设置mode: 'no-cors',这会导致请求变为不透明响应,无法获取返回数据,属于回避问题而非解决。

4. 验证配置加载与浏览器缓存

  • 查看SpringBoot启动日志,确认CorsFilter被正确加载(主程序同包/子包下的配置类会被自动扫描);
  • 清除浏览器缓存或使用隐私模式测试,避免旧的CORS响应缓存影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:42:20