高可用架构 技术随笔

前后端分离跨域 CORS 完整指南(含 Spring Boot 配置)

前后端分离后,前端(localhost:8080)请求后端(localhost:9090)经常被浏览器拦截,控制台报 Access-Control-Allow-Origin 相关错误。这是因为浏览器的同源策略,需要服务端正确配置 CORS。

一、什么是同源

协议、域名、端口三者任意一个不同,就属于跨域。跨域时浏览器会先发预检请求(OPTIONS)确认服务端是否允许。

二、Spring Boot 全局配置 CORS

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowCredentials(true)
                .maxAge(3600);
    }
}

三、常见坑点

  1. allowCredentials(true) 时,allowedOriginPatterns 不能用 *,必须指定具体域名,否则浏览器报错。
  2. 带自定义请求头(如 Authorization)会触发预检,确保服务端允许该头。
  3. 若项目还用了 Spring Security,需在 SecurityFilterChain 中放行 OPTIONS 预检请求。
  4. 网关层(如 Nginx、Gateway)也可以统一处理跨域,避免每个服务重复配置。
标签
跨域前端Spring Boot