我在Ubuntu上安装了nginx 1.15.5,我无法想出在我的http响应中添加“Access-Control-Allow-Headers”或其他标头。特别是我正在使用代理服务器(Nginx)将所有请求发送到.NET CORE应用程序上的Kestrel服务器。当Chrome尝试调用Kestrel Web服务器的API方法时,Chrome会在控制台中写入:
"Request header field Content-type is not allowed by Access-Control-Allow-Headers in preflight response."
我对“Access-Control-Allow-Origin”有同样的问题,但我解决了我的问题,添加到“默认”文件配置了"add_header 'Access-Control-Allow-Origin' '*';"
。
当我尝试:
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
我在回复中没有看到此标题,因此Chrome不允许我继续访问该网站。
这是我在nginx中的“默认”配置文件:
# Default server configuration
#
server {
listen 80;
server_name (myservername);
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Allow-Origin' '*';
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
我还配置了kestrel Web服务器以允许任何源,任何标头等...
有人可以帮我理解,为什么nginx不会添加这个标题?
发布于 2018-10-23 14:00:04
根据文档add_header
可能有几个add_header指令。当且仅当在当前级别上没有定义add_header指令时,这些指令才从前一级继承。
虽然它没有调用它,proxy_pass
但很可能用于add_header
添加返回的标题,从而删除以前的级别add_header
。
为了使这个工作添加always
到你的结束add_header
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' always;
add_header 'Access-Control-Allow-Origin' '*' always;
https://stackoverflow.com/questions/-100002966
复制相似问题