次の構成があると仮定します ($branch
はこのスニペットの前に設定されていますが、関係ないと思います)。
# If the request origin ends in .domain.com
set $allowed_origin "";
if ($http_origin ~* ^(.+\.)?domain\.com$) {
set $allowed_origin $http_origin;
}
add_header Access-Control-Allow-Origin "$allowed_origin" always;
add_header Access-Control-Allow-Credentials "true" always;
add_header Access-Control-Allow-Headers "Accept, Authorization, Content-Type, Cookie, Some-Custom-Header, Another-Custom-Header, X-And-Another-One" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
root /var/path/www/$branch/www;
index index.php index.html;
error_page 404 = /notfound.php;
location ~ ^/v\d+/ {
root /var/path/www/$branch/www;
try_files $uri_lower $uri_lower/ /some.php?$query_string;
}
location / {
root /var/path/www/$branch/www;
try_files $uri_lower $uri_lower/ =404;
}
location ~ \.php$ {
try_files $uri_lower $uri_lower/ $uri $uri/ =404;
include fastcgi-params;
}
これは次のリクエストに対して正常に動作します (200 を返します)。
OPTIONS https://some.domain.com/v1/graphql HTTP/1.1
Host: some.domain.com
Origin: https://another.domain.com
ただし、最初の に空のif
(add_header
変更なし、単なる空のif
)を追加するとlocation
、次のようになります。
location ~ ^/v\d+/ {
if ($http_origin ~* ^(.+\.)?domain\.com$) {
}
root /var/path/www/$branch/www;
try_files $uri_lower $uri_lower/ /some.php?$query_string;
}
応答し始める
HTTP/1.1 405 Not Allowed
ここで if 条件を追加する理由と方法を誰か知っていますか。 場合によっては、許可されたオリジンに対してのみ特定の CORS を設定する場合、この内部のヘッダーを操作したいと考えます。