我在服务器部分下添加了Access-Control-Allow-Origin。这对于任何“图像”都可以正常工作。当我调用“规范链接”(1.pdf)时,响应中缺少Access-Control-Allow-Origin。为什么?以及如何解决?
我不想将此行添加到我的所有规范链接中。
server {
server_name myserver.de;
listen 10.11.12.13:443 ssl http2;
access_log /var/log/nginx/ssl_access.log;
error_log /var/log/nginx/ssl_error.log error;
add_header 'Access-Control-Allow-Origin' 'https://foo.bar';
location / {
root /data/images/;
location ~ (.*)/1.pdf$ {
#add_header 'Access-Control-Allow-Origin' 'https://foo.bar';
add_header Link "<http://foo.bar/a-pdf>; rel=\"canonical\"";
}
}
答案 0 :(得分:5)
可能有多个add_header指令。这些指令是 当且仅当不存在时,才从上一级继承 在当前级别上定义的add_header指令。
您可以使用ngx_headers_more
模块来解决此问题
如果您不想使用上述模块,请尝试类似的操作
server {
set $headerA 'https://foo.bar';
set $headerB "";
if (something) {
set $headerB "something";
}
add_header 'Access-Control-Allow-Origin' $headerA;
add_header Link $headerB;
}
仅在服务器块中使用add_header并从位置块中删除所有add_header。请注意,如果Link
为空,则不会返回headerB