NGINX add_header, adicionando vários cabeçalhos

17

Estou tentando enviar vários cabeçalhos

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

No entanto, em vez disso, o NGINX os transforma em

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

Qual é a solução?

    
por Gajus 16.01.2012 / 17:14

3 respostas

24

Bem, sim, o nginx está combinando os cabeçalhos com nomes idênticos ... mas está fazendo isso de acordo com a especificação HTTP. Veja a seção 4.2 .

O cabeçalho:

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

É, de acordo com a especificação HTTP / 1.1, funcionalmente equivalente a:

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

Se você tiver um sistema ou aplicativo capaz de ler um formato e não o outro, esse é o problema. O nginx está fazendo certo.

EDITAR :

A documentação da Mozilla afirma que só pode haver um cabeçalho Access-Control-Allow-Origin .

A formatação ( veja aqui ) deve ser uma lista delimitada por espaço de origens:

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

Mas, na verdade, você deveria estar ecoando o cabeçalho Origin fornecido pelo cliente em vez de gerar um fora do azul. Isso é provavelmente mais apropriado:

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

Confira esta postagem para configurar seu nginx CORS com domínios dinâmicos: link

    
por 21.05.2018 / 16:30
-1

Eu estava enfrentando o mesmo problema que vários sub-domínios em minha rede tentando acessar recursos e nginx não foi configurado corretamente. Aqui está como eu consertei.

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

Espero que isso ajude.

    
por 15.11.2017 / 10:48

Tags