Aunque esto se preguntó hace mucho tiempo, estaba compilando nginx con más módulos, pero con la versión más nueva de nginx, descubrí que no tenía que compilar nginx a medida, todo lo que necesitaba era agregar una always
directiva.
http://nginx.org/en/docs/http/ngx_http_headers_module.html
Syntax: add_header name value [always];
Si se especifica el parámetro always (1.7.5), el campo de encabezado se agregará independientemente del código de respuesta.
Entonces, una versión sintonizada de los encabezados 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;
}
always
Fue la clave. ¡Gracias por señalarme esto, me estaba volviendo loco!Supongo que actualmente estás usando la
add_header
directiva. La documentación señala que esto solo establece el encabezado para el código de estado 200, 204, 301, 302 y 304. Para configurar el encabezado de los códigos de estado 404, deberá usar lamore_set_headers
directiva del módulo headers_more (es posible que deba volver a compilar nginx para obtener este módulo). Lo siguiente establecería el encabezado para todos los códigos de estado:También puede restringirlo a códigos de estado específicos:
fuente