Même si cela a été demandé il y a longtemps, je compilais nginx avec plus de modules, mais avec une version plus récente de nginx, j'ai trouvé que je n'ai pas besoin de compiler nginx sur mesure, tout ce dont j'avais besoin était d'ajouter une always
directive.
http://nginx.org/en/docs/http/ngx_http_headers_module.html
Syntax: add_header name value [always];
Si le paramètre always est spécifié (1.7.5), le champ d'en-tête sera ajouté quel que soit le code de réponse.
Donc, une version optimisée des en- têtes 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
était la clé. Merci de me l'avoir signalé, je devenais fou!Je suppose que vous utilisez actuellement la
add_header
directive. La documentation note que cela définit uniquement l'en-tête pour les codes d'état 200, 204, 301, 302 et 304. Pour définir l'en-tête pour les codes d'état 404, vous devrez utiliser lamore_set_headers
directive du module headers_more (vous devrez peut-être recompiler nginx pour obtenir ce module). Les éléments suivants définiraient l'en-tête de tous les codes d'état:Vous pouvez également le limiter à des codes d'état spécifiques:
la source