nginx去除重复的header,如:Access-Control-Allow-Origin

2,032 阅读1分钟

配置Access-Control-Allow-Origin可以在项目里面配置也可以在nginx中配置。 背景: 有一个项目无源码,项目中配置Access-Control-Allow-Origin:*

但是安全漏洞修复需要指定Origin,所以只能在nginx中进行设置

if ($http_origin ~* "^http?://(1.1.1.1:8080|1.1.1.2:8180)$") { add_header Access-Control-Allow-Origin "$http_origin"; }

但是设置完之后页面出现两个Access-Control-Allow-Origin

image.png

很明显是有错误的,这时候需要在ngxinx中设置

proxy_hide_header Access-Control-Allow-Origin;

来先将Access-Control-Allow-Origin隐藏再设置即可

完整配置:

location ^~ / { proxy_pass http://localhost:8080/; proxy_set_header Real-Host $host; #保留真实域名 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_hide_header Access-Control-Allow-Origin; if ($http_origin ~* "^http?://(1.1.1.1:8080|1.1.1.2:8180)$") { add_header Access-Control-Allow-Origin "$http_origin"; } }

image.png