WebMvcConfigurer 全局跨域配置是最常用稳妥方式:通过@Configuration类实现该接口,重写addCorsMappings,用addMapping("/*")匹配所有接口,allowedOriginPatterns("")允许多源(生产需限定),allowCredentials(true)支持凭证,allowedMethods指定HTTP方法,allowedHeaders与exposedHeaders设为"*",maxAge(3600)缓存预检。

用 WebMvcConfigurer 做全局跨域配置,是 Spring Boot 项目中最常用也最稳妥的方式。它不侵入业务代码,统一管理规则,还能和 Spring Security 自然协同。
核心配置类写法
新建一个带 @Configuration 注解的类,实现 WebMvcConfigurer 接口,重写 addCorsMappings 方法:
- 调用
registry.addMapping("/**")匹配所有 REST 接口路径 -
.allowedOriginPatterns("*")允许任意来源(生产环境请替换为具体域名列表,如"https://example.com", "https://admin.example.com") -
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")明确放行常用 HTTP 方法 -
.allowedHeaders("*")允许客户端发送任意请求头 -
.allowCredentials(true)若前端需携带 Cookie 或 Authorization,此项必须设为true,同时前端fetch或axios要设置withCredentials: true -
.maxAge(3600)缓存预检请求结果 1 小时,减少 OPTIONS 请求频次
注意几个关键细节
有些配置项容易踩坑,需要特别留心:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
allowedOrigins("*")和allowCredentials(true)不能共存,浏览器会直接拒绝。此时必须改用allowedOriginPatterns("*")(Spring Boot 2.4+ 推荐) - 如果项目用了 Spring Security,确保 CORS 配置在 Security 配置之前生效;通常只需保留 WebMvcConfigurer 配置,Security 中无需额外开启
cors(),除非要做更细粒度控制 - 不要在启动类或配置类上误加
@EnableWebMvc,否则会覆盖 Spring Boot 默认的 MVC 配置,导致静态资源、消息转换器等失效 - 若接口路径有前缀(如
/api/**),可把addMapping改为addMapping("/api/**"),避免对健康检查端点(/actuator/**)等也开放跨域
验证是否生效
启动服务后,用浏览器开发者工具查看任意接口响应头,确认包含以下字段:
立即学习“Java免费学习笔记(深入)”;
-
Access-Control-Allow-Origin: https://your-frontend-domain.com(或对应值) -
Access-Control-Allow-Credentials: true(如启用凭证) Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS-
Access-Control-Allow-Headers: *或具体头名
没有这些头,说明配置未加载或被其他过滤器/安全配置覆盖。

















