Como ativar o CORS no Apache e Nginx?

Restrinja ou permita o compartilhamento de recursos entre sites usando o cabeçalho CORS.


O cabeçalho CORS (compartilhamento de recursos de origem cruzada) é suportado em todos os navegadores modernos.

Posso usar cors? Dados sobre o suporte ao recurso cors nos principais navegadores de caniuse.com.

Por padrão, o navegador restringe solicitações HTTP de origem cruzada por meio de scripts. E, CORS pode ser útil reutilizar os recursos comuns de aplicativos em outros aplicativos da web. Depois de adicionado corretamente, ele instrui o navegador a carregar o aplicativo de uma origem diferente.

Existem seis tipos populares de cabeçalhos CORS que um servidor pode enviar. Vamos explorá-los.

Controle de Acesso – Permitir Origem

O mais popular que ele diz ao navegador para carregar os recursos na origem permitida. Ele suporta curinga (*) e, assim, qualquer domínio pode carregar os recursos. No entanto, ele tem uma opção para permitir uma origem específica.

Apache

Adicione o seguinte no httpd.conf ou em qualquer outro arquivo de configuração em uso.

Conjunto de cabeçalhos Access-Control-Allow-Origin "*"

Reinicie o Apache para testar. Você deve vê-los nos cabeçalhos de resposta.

E, para permitir uma origem específica (ex: https://gf.dev), você pode usar o seguinte.

Conjunto de cabeçalhos Access-Control-Allow-Origin "https://gf.dev"

Nginx

Aqui está um exemplo para permitir a origem https://geekflare.dev. Adicione o seguinte no bloco do servidor nginx.conf ou no arquivo de configuração em uso.

add_header Access-Control-Allow-Origin "https://geekflare.dev";

Métodos de controle de acesso e permissão

O navegador pode iniciar um ou mais métodos HTTP para acessar os recursos. Ex: – GET, PUT, OPÇÕES, PUT, DELETE, POST

Apache

Para permitir apenas GET e POST apenas.

Header add Access-Control-Allow-Methods "GET, POST"

Nginx

Digamos que você precise adicionar os métodos DELETE e OPTIONS, depois adicione como abaixo.

add_header Métodos de controle de acesso e controle de acesso "EXCLUIR, OPÇÕES";

Após a reinicialização, você deverá vê-los nos cabeçalhos de resposta.

Controle de acesso – permitir cabeçalhos

Os cabeçalhos a seguir estão na lista segura, você não precisa adicionar um. Deve funcionar por padrão.

  • Tipo de conteúdo
  • Aceitar
  • Idioma do Conteúdo
  • Accept-Language

No entanto, se você precisar adicionar um personalizado, poderá fazê-lo. Suporta um ou mais cabeçalhos.

Apache

Digamos que você queira permitir cabeçalhos X-Custom-Header e X-Powered-By.

O cabeçalho sempre define acesso-controle-permissão-cabeçalhos "Cabeçalho personalizado X, alimentado por X"

Após uma reinicialização, você verá o resultado nos cabeçalhos de resposta.

Nginx

Um exemplo de adição de cabeçalho X-Customer-Software e X-My-Custom.

add_header Access-Control-Allow-Headers "Software X-Custom, X-My-Custom";

Cabeçalhos de controle de acesso e exposição

Os seguintes cabeçalhos já estão na lista segura. Significa que você não precisa adicionar se quiser expô-los.

  • Expira
  • Pragma
  • Controle de cache
  • Última modificação
  • Idioma do Conteúdo
  • Tipo de conteúdo

Mas, se você precisar de outra lista que não seja segura, poderá permitir que eles sejam os seguintes.

Apache

Use um curinga para expor todos os cabeçalhos.

O cabeçalho sempre define cabeçalhos de controle de acesso e exposição "*"

Nota: um curinga ainda não expõe o cabeçalho de autorização e, se você precisar de um, precisará mencionar explicitamente.

O cabeçalho sempre define cabeçalhos de controle de acesso e exposição "Autorização, *"

O resultado deve ficar assim.

Nginx

Se você deseja expor o cabeçalho Origin.

add_header Cabeçalhos de controle de acesso e exposição "Origem";

Idade máxima de controle de acesso

Você sabe que os dados dos cabeçalhos de controle de acesso e de controle de acesso podem ser armazenados em cache? Ele pode ser armazenado em cache por até 24 horas no Firefox, 2 horas no Chrome (mais de 76).

Para desativar o cache, você pode manter o valor como -1

Apache

Para armazenar em cache por 15 minutos.

O cabeçalho sempre define Access-Control-Max-Age "900"

Como você pode ver, o valor está em segundos.

Nginx

Para armazenar em cache por uma hora.

add_header Controle de acesso-Idade máxima "3600";

Uma vez adicionado, reinicie o Nginx para ver os resultados.

Controle de acesso-Permitir credenciais

Há apenas uma opção para definir aqui – true. Isso é permitido se você deseja expor credenciais como cookies, certificados TLS, autorização.

Apache

O cabeçalho sempre define acesso-controle-permissão-credenciais "verdade"

Nginx

add_header Controle de acesso-Permitir credenciais "verdade";

e o resultado.

Verificando os resultados

Depois de adicionados os cabeçalhos necessários, você pode usar ferramentas de desenvolvedor incorporadas no navegador ou um verificador de cabeçalho HTTP online.

Conclusão

Espero que o item acima o ajude a implementar o cabeçalho CORS no Apache HTTP e no servidor da web Nginx para obter melhor segurança. Você também pode estar interessado em aplicar cabeçalhos seguros recomendados pela OWASP.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map