我有 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';
一切正常。