답변:
이것은 오래 전에 요청되었지만 더 많은 모듈로 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 상태 코드에 대한 헤더를 설정하려면 headers_more 모듈 의 more_set_headers
지시문 을 사용해야합니다 (이 모듈을 얻으려면 nginx를 다시 컴파일해야 할 수도 있음). 다음은 모든 상태 코드의 헤더를 설정합니다.
more_set_headers 'Access-Control-Allow-Origin: *';
특정 상태 코드로 제한 할 수도 있습니다.
more_set_headers -s '404' 'Access-Control-Allow-Origin: *';
always
열쇠였습니다. 이것을 지적 해 주셔서 감사합니다. 나는 화를 냈습니다!