小编lbn*_*dev的帖子

非默认端口上反向代理背后的 Spring Boot Cors

我的应用程序有一个使用 Spring Boot 构建的后端,以及一个使用 Angular 构建并由 nginx 提供服务的前端 Web 应用程序。Nginx 配置为将 /api/ 的请求反向代理到后端:

location /api/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://back:8080;
}
Run Code Online (Sandbox Code Playgroud)

如果 nginx 在默认端口 (80) 上运行,我可以通过http://myserver/访问我的应用程序,不会出现任何问题。对http://myserver/api/some/REST/resource 的XHR 调用完美地工作。

如果我将 nginx 更改为侦听其他端口(随机:9043),则所有 XHR 调用都会失败,并显示错误“无效的 CORS 请求”。这是出乎意料的,因为只有我的前端应用程序正在调用 API,并且由于反向代理,该 API 与 javascript 文件在同一主机上提供服务。

为了让它发挥作用,我需要将其添加到我的 Spring 应用程序中:

@Configuration
public class CorsConfig {

    @Value("${url.base:''}")
    private String urlBase;

    @Value("${cors.allowed.origins:[]}")
    private String[] allowedOrigins;

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping(urlBase …
Run Code Online (Sandbox Code Playgroud)

spring nginx cors docker

5
推荐指数
1
解决办法
5279
查看次数

标签 统计

cors ×1

docker ×1

nginx ×1

spring ×1