高可用架构
技术随笔
前后端分离跨域 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);
}
}
三、常见坑点
allowCredentials(true)时,allowedOriginPatterns不能用*,必须指定具体域名,否则浏览器报错。- 带自定义请求头(如 Authorization)会触发预检,确保服务端允许该头。
- 若项目还用了 Spring Security,需在 SecurityFilterChain 中放行 OPTIONS 预检请求。
- 网关层(如 Nginx、Gateway)也可以统一处理跨域,避免每个服务重复配置。