配置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
很明显是有错误的,这时候需要在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"; } }