Nginx:访问控制允许来源不适用于特定位置

时间:2019-05-13 06:39:44

标签: nginx

我在服务器部分下添加了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\"";
        }
    }

1 个答案:

答案 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