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

WebMvcConfigurer的addCorsMappings配置不生效 Nginx反向代理跨域问题

问题根源

你的问题是Spring CORS配置错误导致的,无需额外配置Nginx即可解决。
你当前配置的allowedOrigins仅允许http://localhost:80、http://localhost:8080两个来源的跨域请求,但报错信息显示实际请求来源是http://xx.xx.xx.xxx:8080(服务器公网IP/实际访问域名),不在你配置的允许来源列表中,因此CORS校验不通过被拦截。

修复方案

方案1:添加实际访问的来源地址

将你实际用来访问服务的IP、域名对应的地址都加入允许列表即可,示例配置如下:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins(
                    "http://localhost:80", 
                    "http://localhost:8080",
                    "http://xx.xx.xx.xxx:80",
                    "http://xx.xx.xx.xxx:8080"
                    // 如果有正式域名,也可以一并添加,比如"http://www.yourdomain.com"
                )
                .allowedMethods("*");
    }
}

方案2:允许所有来源(适合开发测试环境)

如果是不需要严格限制跨域来源的场景,Spring Boot 2.4及以上版本可以改用allowedOriginPatterns配置通配符,示例如下:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("*")
                .allowCredentials(true); // 若有跨域传递Cookie的需求可以添加该配置
    }
}

Nginx可选优化

如果你不希望8080端口直接对外暴露,要求所有请求统一走Nginx的80端口,可以在Nginx中添加规则禁止公网直接访问8080端口,或者将8080端口的入站请求也转发至业务服务,这部分属于访问控制优化,不是解决当前CORS报错的必须操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:54:03