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

Spring Boot中带通配符*的CORS映射失效问题求助

解决Spring Boot CORS动态路径映射问题

我之前也碰到过一模一样的问题——静态路径能正常跨域,但带动态参数的路径就报"No Access-Control-Allow-Origin Header"错误,咱们来一步步搞定它:

首先,换掉过时的WebMvcConfigurerAdapter

Spring Boot 2.0+之后,WebMvcConfigurerAdapter已经被标记为废弃了,虽然还能运行,但可能存在隐性的兼容性问题。直接实现WebMvcConfigurer接口会更稳妥:

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/lists/**")
                    // 生产环境建议替换成你实际的前端域名,比如"http://localhost:3000",不要直接用*
                    .allowedOrigins("*")
                    // 明确允许的请求方法,覆盖GET/POST等,必须包含OPTIONS预检请求
                    .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                    .allowedHeaders("*")
                    .allowCredentials(true);
        }
    };
}

为什么之前的配置失效?

你之前只配置了addMapping("/lists/**"),但没有指定其他CORS参数,Spring的默认CORS配置会比较严格:

  • 它不会自动允许所有请求方法,尤其是OPTIONS预检请求(带动态参数的GET请求如果有自定义头或者属于复杂请求,会触发OPTIONS预检)
  • 默认的allowedOrigins可能没有覆盖到你的前端域名,导致跨域校验失败

额外排查:Spring Security的影响

如果你的项目里用到了Spring Security,它会优先处理请求,可能直接拦截了OPTIONS预检请求。这时候需要在Security配置里显式启用CORS:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        // 先启用CORS配置,和上面的WebMvc配置配合生效
        .cors().and()
        // 根据业务需求调整,不需要CSRF的话可以关闭
        .csrf().disable()
        // 其他权限配置示例,比如允许所有请求
        .authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
    return http.build();
}

最后验证

修改完配置后重启应用,测试/lists/142这类路径的GET请求,应该就能正常跨域了。如果还是有问题,可以检查:

  • 前端请求是否带有自定义HTTP头,如果有,要确保allowedHeaders包含这些头,或者用*允许所有
  • 确认你的前端域名没有拼写错误,比如前端是http://localhost:3000,不要写成http://localhost:3001

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:59:36