NGINX add_header, aggiungendo più intestazioni


21

Sto cercando di inviare più intestazioni

add_header Access-Control-Allow-Origin http://dev.anuary.com;
add_header Access-Control-Allow-Origin https://dev.anuary.com;

Tuttavia, invece NGINX li trasforma in

Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com

Qual è la soluzione?

Risposte:


28

Bene, sì, nginx sta combinando le intestazioni identiche ... ma lo fa in conformità con le specifiche HTTP. Vedere la sezione 4.2 .

L'intestazione:

Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com

Secondo le specifiche HTTP / 1.1, è funzionalmente equivalente a:

Access-Control-Allow-Origin: http://dev.anuary.com
Access-Control-Allow-Origin: https://dev.anuary.com

Se hai un sistema o un'applicazione in grado di leggere un formato e non l'altro, allora il problema è questo. nginx lo sta facendo bene.


MODIFICA :

La documentazione di Mozilla afferma che può esserci solo Access-Control-Allow-Originun'intestazione.

La sua formattazione ( vedi qui ) dovrebbe essere un elenco di origini delimitate da spazi:

add_header Access-Control-Allow-Origin "http://dev.anuary.com https://dev.anuary.com";

Ma davvero, dovresti fare eco Originall'header fornito dal client invece di generarne uno di punto in bianco. Questo è probabilmente più appropriato:

if ($http_origin ~* "^https?://dev\.anuary\.com$" ) {
    add_header Access-Control-Allow-Origin $http_origin;
}

Bene, quest'ultimo non funziona in FireFox 9 o in qualsiasi altra versione. Che problema.
Gajus,

1
@Guy Né dovrebbe. Vedi modifica.
Shane Madden

NOTA: se la soluzione fornita non funziona per te, leggi questo e questo . È illuminante e potresti trovare la ragione per cui non funziona.
its_me,

Il valore di Access-Control-Allow-Origin può essere regexp?
haxpanel,

Ti dispiacerebbe estendere il tuo esempio a più origini (ad es. http://example.comE http://localhost:3000)?
Augustin Riedinger,


-1

Stavo affrontando lo stesso problema di più sottodomini nella mia rete cercando di accedere alle risorse e nginxnon sono stato impostato correttamente. Ecco come l'ho risolto.

add_header Access-Control-Allow-Origin https://*.your-domain-name.com;

Spero che aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.