Como habilitar CORS em Nginx

Como habilitar CORS em Nginx

Compartilhamento de Recursos Cross-Origin (CORS) é um importante recurso de segurança para aplicativos da web. Ele permite que os aplicativos da Web usem recursos de outros domínios, impedindo o acesso malicioso. Ao ativar os CORs no Nginx, podemos garantir que nossos aplicativos da Web sejam seguros e que possam acessar recursos de outros domínios. Com a configuração certa, podemos garantir que solicitações maliciosas sejam bloqueadas e que nossos aplicativos sejam seguros.

Neste artigo, veremos como ativar os CORs no Nginx.

Como habilitar CORS em Nginx

Nginx é um servidor da web de código aberto que é frequentemente usado para servir conteúdo estático. Também é usado para solicitações de proxy para outros servidores da Web, como o Apache. Para ativar os CORs no Nginx, precisamos adicionar algumas diretivas de configuração.

Uma configuração simples para ativar os CORs no Nginx se parece com o seguinte:

Localização / add_header "Access-Control-Allow-Origin" *; add_header "Access-Control-arel-metods" "Get, Post, Opções"; Add_Header "Autorização" Acesso-Control-Alow-headers "" Autorização ";
12345Localização / add_header "Access-Control-Allow-Origin" *; add_header "Access-Control-arel-metods" "Get, Post, Opções"; Add_Header "Autorização" Acesso-Control-Alow-headers "" Autorização ";

A primeira diretiva adiciona um cabeçalho à resposta que permite que todas as origens acessem o recurso. A segunda diretiva adiciona um cabeçalho que especifica quais métodos são permitidos. A terceira diretiva adiciona um cabeçalho que permite que o cabeçalho da autorização seja enviado com solicitações.

Além dessas diretrizes, você também precisa configurar um Sub URL em sua configuração Nginx. Este bloco especificará quais URLs específicos podem ser acessados ​​via CORS. Por exemplo:

Localização / API / add_header "Access-Control-Allow-Origin" *; add_header "Access-Control-arel-metods" "Get, Post, Opções"; Add_Header "Autorização" Acesso-Control-Alow-headers "" Autorização ";
12345Localização / API / add_header "Access-Control-Allow-Origin" *; add_header "Access-Control-arel-metods" "Get, Post, Opções"; Add_Header "Autorização" Acesso-Control-Alow-headers "" Autorização ";

Esta configuração permitirá que qualquer origem acesse os URLs que começam com /API/. Também é possível especificar domínios específicos que podem acessar o recurso. Por exemplo:

Localização/API/add_header "Access-Control-Allow-Origin" "https: // Exemplo.com "; add_header" Access-Control-arel-Methods "" Get, Post, Options "; Add_Header" Access-Control-Alow-headers "" Autorização ";
12345Localização/API/add_header "Access-Control-Allow-Origin" "https: // Exemplo.com "; add_header" Access-Control-arel-Methods "" Get, Post, Options "; Add_Header" Access-Control-Alow-headers "" Autorização ";

Isso permitirá apenas solicitações do exemplo.com acessar os URLs que começam com /API/. Você pode permitir vários domínios repetindo essa linha com outros domínios.

Permitir Acesso-Control-Arl-Origin (CORS) autorização apenas para arquivos específicos. Por exemplo, para permitir que os CORs para fontes usem apenas o seguinte exemplo:

if ($ filename ~* ^.*?\.(eot) | (otf) | (ttf) | (woff) $) add_header Access-Control-allow-origin *;
123if ($ filename ~* ^.*?\.(EOT) | (OTF) | (TTF) | (woff) $) add_header Access-Control-arel-origin *;

Depois de adicionar as diretivas de configuração necessárias, você pode reiniciar o nginx e as alterações entrarão em vigor.

Configuração aberta do NGINX CORS

Aqui está o arquivo de configuração NGINX CORS de grande abertura, que você pode usar com os servidores nginx. Com esta configuração, você pode ativar os CORs e outros parâmetros com base nos tipos de solicitação.

localização / if ($ request_method = 'options') add_header 'access-control-allow-origin "*'; # # om nom nom cookies # add_header 'access-control-clow-credenciais" true "; add_header 'Access-Control-arlow-methods "Get, Post, Options'; # # Cabeçalhos e cabeçalhos personalizados vários navegadores * devem * ficar bem com, mas não são # add_header 'Access-Control-Alow-Headers" DNT, x- CustomHeader, Keep-alive, agente do usuário, x-requestado com, se modificado-um controle de cache, do tipo conteúdo '; # # Diga ao cliente que essas informações antes do vôo são válidas por 20 dias # add_header 'Access-Control-max-Iage' 1728000; Add_Header 'Type de conteúdo "Texto/Plain charset = utf-8'; add_header 'content-length' 0; retorna 204; if ($ request_method = 'post') add_header 'access-control-allow-origin"*' ; add_header 'Access-Control-Alow-Credenciais "TRUE'; add_header '' Access-Control-Alow-Methods" Get, Post, Options '; add_header 'Access-Control-Alow-headers "DNT,X-CustomHeader, Keep-Alive, User-Agent, X-Requestado com, se modificado-Desde um controle de cache, do tipo conteúdo '; if ($ request_method = 'get') add_header 'access-control-allow-origin "*'; add_header 'access-control-allow-credentials" true'; add_header 'Access-Control-arel-Methods "Get, Post, Options'; Add_Header 'Access-Control-Alow-headers" DNT, X-CustomHeader, Keep-Aliving, User-Agent, X-Request-With, se modificado -S, desde, controle de cache, tipo de conteúdo ';
1234567891011121314151617181920212223242526272829303132333435localização / if ($ request_method = 'options') add_header 'Access-Conntrol-allow-origin' '*'; # # Om nom nom cookies # add_header 'acesso-controle-arel-credenciais' 'true'; add_header 'Access-Control-arel-metods' 'Get, Post, Opções'; # # Cabeçalhos e cabeçalhos personalizados vários navegadores * devem * ficar bem com, mas não são # add_header 'access-control-arel-headers' 'dnt, x-clustomheader, mantendo-se, agente de usuário, x-requestado-with, Se modificado, uma vez, um controle de cache, do tipo conteúdo '; # # Diga ao cliente que essas informações antes do vôo são válidas por 20 dias # add_header 'Access-Control-max-Iage' 1728000; add_header 'content-type' 'text/plue charset = utf-8'; add_header 'content-length' 0; retornar 204; if ($ request_method = 'post') add_header 'access-control-allow-origin' '*'; add_header 'Access-Control-Alow-Credenciais' 'True'; add_header 'Access-Control-arel-metods' 'Get, Post, Opções'; Add_Header 'Access-Control-Allow-headers 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Request-With, se modificou-se-modificado, controle de cache, tipo conteúdo'; if ($ request_method = 'get') add_header 'access-control-allow-origin' '*'; add_header 'Access-Control-Alow-Credenciais' 'True'; add_header 'Access-Control-arel-metods' 'Get, Post, Opções'; add_header 'Access-Control-Arl-the-headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requestado com, se modificado, um controle de cache, tipo conteúdo';

Recurso: https: // Michielkalkman.com/snippets/nginx-cors-open-Configuração/

Testando a configuração do seu CORS

Depois de ativar o CORS no Nginx, você deve testar sua configuração para garantir que ele esteja funcionando corretamente. A maneira mais fácil de fazer isso é usar uma ferramenta como Postman ou Curl para fazer uma solicitação para o recurso que você deseja testar.

Ao fazer o pedido, você deve adicionar o cabeçalho de origem. Por exemplo, se você estiver testando um URL que começa com /API/, Você deve adicionar a origem do cabeçalho: https: // exemplo.com. Você também deve adicionar o cabeçalho de controle de acesso à solicitação com o método que deseja testar.

Curl -V http: // your_domain.com  

Depois de fazer o pedido, você deve verificar a resposta. Se o CORS estiver ativado corretamente, você deverá ver o cabeçalho de acesso ao controle de acesso com o valor da origem que você especificou na solicitação.

Entendendo as solicitações do CORS

Para entender como os CORS funcionam, é importante entender os diferentes tipos de solicitações que podem ser enviadas. Existem dois tipos de solicitações: solicitações simples e solicitações de pré -voo.

Solicitações simples são solicitações que não requerem verificações de pré -voo. Essas solicitações geralmente são solicitadas ou postagens que não possuem cabeçalhos personalizados.

As solicitações de pré -voo são solicitações mais complexas que exigem uma etapa adicional. Esses pedidos normalmente têm cabeçalhos personalizados ou um método que não seja obtido ou postar. Antes que a solicitação possa ser enviada, o navegador fará uma solicitação inicial, conhecida como solicitação de pré -voo, para determinar se a solicitação deve ser permitida.

Se a solicitação de pré -voo for permitida, o navegador enviará a solicitação real. Se a solicitação de pré -voo não for permitida, o navegador não enviará a solicitação real e o recurso não será acessado.

Processo de compartilhamento de recursos de origem cruzada (CORS)

Conclusão

Neste artigo, analisamos como habilitar os CORs no Nginx. Vimos como adicionar as diretivas de configuração necessárias e os blocos de localização à nossa configuração nginx. Também analisamos como testar a configuração do nosso CORS e como entender as solicitações do CORS.

Obrigado pela leitura! Se você tiver alguma dúvida ou comentário, deixe -os na seção de comentários abaixo.