“O compartilhamento de recursos de origem cruzada é conhecida pelo acrônimo CORS. Quando alguém está operando em um domínio diferente, o servidor usará esse método para controlar o acesso aos seus serviços. Isso acontece no meio de um servidor e um navegador. Com a ajuda dos cabeçalhos HTTP Access-Control-Request-*, o navegador transmite alguns dados. Com base nos cabeçalhos recebidos, o servidor decide o que enviar de volta como acesso-controle-allow-* cabeçalhos. O navegador agora está ciente de sua capacidade ou incapacidade de acessar os recursos do servidor. O navegador pode ocasionalmente realizar um pré-voo, que é uma validação, antes de fazer a solicitação real. Os cabeçalhos não podem ser alterados pelo código front-end no navegador. Os cabeçalhos podem ser modificados pelo código do lado do servidor. No entanto, ele deve ser executado por um serviço a jusante que o aplicativo não pode ver, como um gateway da API ou o servidor HTTP.
As consultas HTTP de origem cruzada feitas por scripts são restringidas pelos navegadores para preocupações com segurança. O princípio da mesma origem, por exemplo, é aderido à API Fetch e XmlHttPrequest. Isso implica que um aplicativo da web utilizando essas APIs só pode fazer solicitações de recursos da origem da qual foi carregado, a menos que a resposta de outras fontes tenha os cabeçalhos apropriados do CORS.”
Gatilhos e tipos de tigger a solicitação de cors
Como os recursos são frequentemente hospedados na mesma fonte do aplicativo da web, nem todas as solicitações resultam em uma solicitação CORS. CORS está ativado se for diferente. Solicitações simples e pedidos pré-voados são duas formas diferentes de solicitações de CORS.
CORs de solicitação simples
Quando um usuário inicia uma solicitação simples, seu navegador da web transmite a solicitação ao servidor. O servidor examina a fonte da solicitação, analisa -a às suas regras e fornece o recurso solicitado se corresponder. Este tipo de solicitação emprega os cabeçalhos de origem e controle-controle-alistão para decidir se o recurso deve ser fornecido. Os únicos tipos de solicitação que resultarão em uma solicitação simples são obter, cabeça e postagem, bem como os cabeçalhos como aceitar idiomas, DPR, downlink, salvar dados, tipo de conteúdo, linguagem de conteúdo, largura de viewport e largura e largura de viewport e Largura. Mesmo ainda, nem todos os tipos de conteúdo resultam em uma solicitação direta. Aqui, apenas certas formas de codificação de formulários causam uma solicitação direta.
CORS pré-voo
Os pedidos pré-voados são um pouco diferentes porque não há uma conexão instantânea com os serviços na rodada inicial. Uma solicitação pré-voo é iniciada quando as condições são alteradas de alguma forma, por exemplo, utilizando um cabeçalho de solicitação modificado ou um tipo de conteúdo alternativo. Em solicitações pré-voadas, o mecanismo de pesquisa confirma primeiro que pode acessar o recurso correspondendo ao navegador da web e, quando o navegador da Web responde com uma resposta OK (HTTP 200), ele envia outra solicitação para adquirir o recurso. Primeiro, ele faz uma solicitação usando o método de opções HTTP e, em seguida.
Pré -requisito de CORS em Nginx
Em primeiro lugar, as respostas 4xx são incompatíveis com a diretiva de cabeçalho Adicionar padrão do Nginx. A diretiva mais definida, que também funciona com respostas 4xx, pode ser usada para adicionar cabeçalhos personalizados, mas, para isso, devemos primeiro instalar o módulo Nginx Headers.
O pacote nginx-extras pode ser prontamente instalado se você usar uma distribuição Debian, apesar da recomendação da documentação de que você construa nginx a partir da fonte usando o módulo:
Importância de ativar os CORs no Nginx
JavaScript executando no navegador do cliente normalmente não precisa acessar serviços fora de seu domínio. Como resultado, desligar os CORs pode ser uma precaução de segurança sábia.
No entanto, para que essa funcionalidade funcione no back -end, os CORs devem ser ativados. Isso ocorre porque o código JavaScript legítimo pode ocasionalmente precisar passar uma solicitação para um servidor além de seu domínio. Um protocolo separado, nome de domínio ou porta pode ser referido como o mesmo domínio.
Como habilitar CORS no nginx no Ubuntu 20.04
Vamos para a parte principal. Abra o editor preferido, Vim, depois navegue até a configuração do NGINX:
Digite a próxima entrada no bloco de servidor da sua configuração nginx.
Reinicie o Nginx depois disso e salve o arquivo de configuração.
Os CORS podem ser ativados usando o comando CURL para verificar. A saída a seguir deve resultar disso:
Como lidar com os erros do CORS em um ritmo
O lado do servidor é onde o CORS é implementado; O lado do cliente não pode mudar como funciona. Os usuários podem ser impedidos de usar recursos compartilhados usando o comportamento do CORS, geralmente conhecido como erro CORS. Isso não é um erro, mas um mecanismo de segurança para proteger você ou o site que você está visitando de uma possível violação de segurança. A implementação do lado do cliente de cabeçalhos HTTP inadequados ou incorretos pode resultar nessa questão (e.g., Falta as chaves da API e outras informações de autorização). Temos algumas soluções únicas para esses erros.
Conclusão
O principal objetivo do CORS é tornar os aplicativos on-line mais seguros para impedir ataques de homem no meio. Os cors ainda podem ser vantajosos também. Como não é ativado por padrão, os CORS devem ser ativados nessa situação. Com o uso das diretrizes de origem e controle de controle-arigina, que são os tipos de solicitação única usados pelo tipo de solicitação básico de CORS, o Nginx pode fornecer a permissão do navegador da web para acessar o recurso solicitado com base na origem. CORS é uma ótima ferramenta que deve ser utilizada cuidadosamente em ambos os casos.