Nginx - 删除 Last_Modified 标头也会删除 CORS 标头?

Nginx - 删除 Last_Modified 标头也会删除 CORS 标头?

我正在尝试从 Nginx 响应中删除 Last_Modified 标头。

我读到过,这可以通过配置中的这一行来实现:

 add_header Last-Modified '';

这有效,但是由于某种原因,我们的 CORS Access-Control 标头不再发送。我假设这可能是一个错误(我们使用的是 v1.2.6),但想听听其他人的意见。

为什么会发生这种情况?我该怎么做才能删除 Last-Modified,但保留 Access-Control 标头?

我们的配置文件如下所示:

http {

    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Credentials' 'true';

    server {
        listen 80;
        server_name xxxxxxxxxxxxxxxxx;
        root xxxxxxxxxxxxxxxxx

        expires 1y;
        log_not_found off;

        add_header Last-Modified '';
    }
}

答案1

nginxadd_header指令有点...特殊,当从不太具体的范围继承时,其行为对于粗心大意的人来说是一个陷阱。正如文档所述:

add_header 指令可以有多个。当且仅当当前级别上没有定义 add_header 指令时,这些指令才会从上一级继承。

这意味着,一旦你指定任何 add_header除了给定配置块中的指令之外,您还必须指定add_header要保留的不太具体范围的任何指令。

相关内容