如何配置 nginx 以将标头包含到响应中?

如何配置 nginx 以将标头包含到响应中?

我有 nginx,它可以代理请求到应用服务器browser <=> nginx <=> app_server

由于某种原因,并非所有提供的标头app_server都会返回给浏览器。

即类似的标题Access-Control-Allow-***将从响应中删除。

如何解决这个问题?

我当前的位置配置是:

location / {
    proxy_pass http://app_server:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Origin '';
    proxy_cache_bypass $http_upgrade;
    proxy_buffering off;
}

答案1

好的,我找到了导致此行为的原因。通过添加

proxy_set_header Origin '';

我基本上从代理请求中删除了这个标头,然后发送到 app_server。因此,app_server 没有返回任何 CORS 标头。当我将其更改为

proxy_set_header Origin '$http_origin';

一切正常。

相关内容