如何使Nginx CORS配置(add_header)工作?

时间:2018-10-22 08:05:20

标签: nginx header cors add

nginx(v1.14)是反向代理服务器,它将api请求发送到tomcat。我在conf文件中添加了一些CORS配置,但是它不起作用。 Nginx conf文件如下:

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).

响应头是这样的: enter image description here

我不知道该如何工作。

2 个答案:

答案 0 :(得分:0)

尝试这个

location / {
           add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2';
            proxy_pass 172.20.10.2:8080;
        }

答案 1 :(得分:0)

根据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个响应代码苦苦挣扎了几个小时...最终通过分配“ 始终”标志来解决,例如:

add_header 'Access-Control-Allow-Origin' 'http://172.20.10.2' always;