NGINX 错误地多次添加标头

NGINX 错误地多次添加标头

我想将 CORS 添加到我的反向代理。一般来说,一切都正常,但我不明白为什么,尽管我阅读了 add_header 上的文档并阅读了几个论坛条目。

在我的例子中,我有两个 if,我假设 nginx 只解析一个,但我甚至不明白发生了什么。因为如果我请求位置,预检没问题,但实际请求告诉我:

不允许使用 CORS 多重...

查看响应头实际上有两个:

响应头

位置部分如下(不,这些是我正在执行的 add_header 的唯一调用):

location / {
    # Preflighted requests
    if ($request_method ~* "(GET|PUT|POST|DELETE)" ) {
        add_header "Access-Control-Allow-Origin"  *;
        add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
        add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";

        proxy_pass http://<myservice>:91;
    }

    if ($request_method = OPTIONS ) {
        add_header "Access-Control-Allow-Origin"  *;
        add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
        add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
        return 200;
        }
    }
}

不过有趣的是,尽管浏览器中出现了这个错误,但有效载荷仍然存在并且有效。所以我可以清楚地推断出这些双重来源是我的问题。(已经得到并解决了它,但没有明白它为什么会起作用)。

感谢您的帮助或澄清我的思路;我只是想知道那是什么样的魔法。

相关内容