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).
我不知道该如何工作。
答案 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;