回答:
これはずっと前に尋ねられましたが、私は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;
}
私はあなたが現在add_header
ディレクティブを使用していると仮定しています。ドキュメントでは、これは200、204、301、302、304ステータスコードのヘッダーのみを設定することに注意しています。404ステータスコードのヘッダーを設定するにmore_set_headers
は、headers_moreモジュールのディレクティブを使用する必要があります(このモジュールを取得するには、nginxを再コンパイルする必要がある場合があります)。以下は、すべてのステータスコードのヘッダーを設定します。
more_set_headers 'Access-Control-Allow-Origin: *';
特定のステータスコードに制限することもできます。
more_set_headers -s '404' 'Access-Control-Allow-Origin: *';
always
キーでした。これを指摘してくれてありがとう、私は怒っていた!