Nginx

允許 Nginx 上的跨源請求 (CORS) 進行 404 響應

  • June 22, 2015

我正在使用 Nginx 使用此問題中概述的技術來提供靜態文件以響應 CORS 請求。但是,當文件不存在時,404 響應不包含Access-Control-Allow-Origin: *標題,因此被瀏覽器阻止。

如何發送Access-Control-Allow-Origin: *404 響應?

儘管很久以前有人問過這個問題,但我正在用更多模組編譯 nginx,但是使用較新版本的 nginx,我發現我不必自定義編譯 nginx,我所需要的只是添加always指令。

http://nginx.org/en/docs/http/ngx_http_headers_module.html

Syntax: add_header name value [always];

如果指定了 always 參數(1.7.5),則無論響應程式碼如何,都將添加標頭欄位。

因此, CORS標頭的調整版本:

           if ($cors = "trueget") {
                   # Tells the browser this origin may make cross-origin requests
                   # (Here, we echo the requesting origin, which matched the whitelist.)
                   add_header 'Access-Control-Allow-Origin' "$http_origin" always;

                   # Tells the browser it may show the response, when XmlHttpRequest.withCredentials=true.
                   add_header 'Access-Control-Allow-Credentials' 'true' always;
           }

引用自:https://serverfault.com/questions/393532