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

Kotlin Spring Boot全局CORS不生效报No mapping for OPTIONS /users怎么解决?

问题根因

  • 你在WebConfig类上添加了@EnableWebMvc注解,该注解会完全接管Spring MVC的配置,覆盖Spring Boot提供的默认MVC自动配置,默认的CORS预检请求(OPTIONS)处理逻辑也会随之失效。
  • 控制器接口路径匹配错误,你在@PostMapping中配置的路径为/,结合类上的@RequestMapping("users"),最终匹配的路径是/users/,如果前端调用的路径是不带末尾斜杠的/users,就会触发匹配失败的警告。
  • 同时配置全局CORS和方法级的@CrossOrigin注解可能产生配置冲突,导致配置不生效。

解决方案

方案1:调整原有配置(推荐)

  1. 移除WebConfig类上的@EnableWebMvc注解,保留Spring Boot的MVC自动配置能力
  2. 移除控制器方法上的@CrossOrigin注解,避免和全局CORS配置冲突
  3. 调整@PostMapping的路径为"",让接口可以匹配/users路径

修改后的配置代码如下:

@Configuration
class WebConfig : WebMvcConfigurer {
    override fun addCorsMappings(registry: CorsRegistry) {
        registry.addMapping("/**")
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
            // 如需携带Cookie等认证信息,需替换为前端实际部署地址,禁止同时使用*和allowCredentials=true
            .allowedOrigins("*")
            .allowedHeaders("*")
            // 配置预检请求缓存时长,减少重复预检请求
            .maxAge(3600)
    }
}

修改后的控制器代码如下:

@RestController
@RequestMapping("users")
class UserController(
    val userService: UserService
) {
    @PostMapping("", produces = ["application/json"])
    fun createUser(@RequestBody user: User): User {
        return userService.createUser(user)
    }
}

方案2:使用高优先级CORS过滤器

如果调整配置后仍不生效,可以直接注册CorsFilter Bean,该过滤器会在请求进入路径匹配前处理OPTIONS预检请求,优先级高于addCorsMappings配置:

@Configuration
class CorsConfig {
    @Bean
    fun corsFilter(): CorsFilter {
        val source = UrlBasedCorsConfigurationSource()
        val config = CorsConfiguration()
        config.allowedOrigins = listOf("*")
        config.allowedMethods = listOf("GET", "POST", "PUT", "DELETE", "OPTIONS")
        config.allowedHeaders = listOf("*")
        config.maxAge = 3600
        source.registerCorsConfiguration("/**", config)
        return CorsFilter(source)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:30:02