我想将 CORS 添加到我的反向代理。一般来说,一切都正常,但我不明白为什么,尽管我阅读了 add_header 上的文档并阅读了几个论坛条目。
在我的例子中,我有两个 if,我假设 nginx 只解析一个,但我甚至不明白发生了什么。因为如果我请求位置,预检没问题,但实际请求告诉我:
查看响应头实际上有两个:
位置部分如下(不,这些是我正在执行的 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;
}
}
}
不过有趣的是,尽管浏览器中出现了这个错误,但有效载荷仍然存在并且有效。所以我可以清楚地推断出这些双重来源是我的问题。(已经得到并解决了它,但没有明白它为什么会起作用)。
感谢您的帮助或澄清我的思路;我只是想知道那是什么样的魔法。