如何使 nginx CORS 配置(add_header)工作?
How to make nginx CORS configuration(add_header) work?
nginx(v1.14) 是反向代理服务器,它发送api 请求到tomcat。我在 conf 文件中添加了一些 CORS 配置,但它不起作用。 Nginx 配置文件如下:
upstream tomcat_server1 {
server 172.20.10.2:8080;
}
server {
listen 80;
root /opt/nginx/www;
server_name 172.20.10.2;
location / {
proxy_pass http://tomcat_server1;
add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2:8080';
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico|html)$ {
root /opt/nginx/www/;
}
}
似乎add_header指令不起作用,浏览器控制台显示如下信息:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://172.20.10.2:8080/user/login?email=81438234%40qq.com&password=236e3402dbab51ea17f9f6f360993233. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
响应头是这样的:
我不知道如何让它工作。
试试这个
location / {
add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2';
proxy_pass 172.20.10.2:8080;
}
根据Nginx Doc,add_header只会在响应码等于“200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 或 308 (1.13.0)".
由于不知道这个事实,我只是为 400 响应代码苦苦挣扎了几个小时……最后通过分配“always”标志解决了问题,例如:
add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2' always;
nginx(v1.14) 是反向代理服务器,它发送api 请求到tomcat。我在 conf 文件中添加了一些 CORS 配置,但它不起作用。 Nginx 配置文件如下:
upstream tomcat_server1 {
server 172.20.10.2:8080;
}
server {
listen 80;
root /opt/nginx/www;
server_name 172.20.10.2;
location / {
proxy_pass http://tomcat_server1;
add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2:8080';
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico|html)$ {
root /opt/nginx/www/;
}
}
似乎add_header指令不起作用,浏览器控制台显示如下信息:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://172.20.10.2:8080/user/login?email=81438234%40qq.com&password=236e3402dbab51ea17f9f6f360993233. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
响应头是这样的:
我不知道如何让它工作。
试试这个
location / {
add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2';
proxy_pass 172.20.10.2:8080;
}
根据Nginx Doc,add_header只会在响应码等于“200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 或 308 (1.13.0)".
由于不知道这个事实,我只是为 400 响应代码苦苦挣扎了几个小时……最后通过分配“always”标志解决了问题,例如:
add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2' always;