Criação de Apps

CORS: o que é e como resolver o erro no navegador

Resposta rápida

CORS é uma regra de segurança do navegador que impede um site de ler respostas de outro domínio sem autorização. O erro some quando o servidor da API envia os cabeçalhos corretos permitindo a origem do seu site. Corrigir só no front-end não resolve.

Neste artigo
  1. O que é CORS
  2. Por que o erro aparece
  3. Como resolver do jeito certo
  4. O que não fazer

Você escreve uma chamada para uma API, tudo parece certo, e o console do navegador mostra uma mensagem vermelha dizendo que a requisição foi bloqueada pela política de CORS. Esse é um dos erros que mais confundem quem está começando a criar sites e apps.

O que é CORS

CORS significa compartilhamento de recursos entre origens diferentes. Uma origem é a combinação de protocolo, domínio e porta. O endereço https://meusite.com.br é uma origem; https://api.outrodominio.com é outra.

Por padrão, o navegador impede que o código de uma página leia respostas vindas de outra origem. Isso protege o usuário: sem essa regra, um site malicioso aberto em outra aba poderia fazer pedidos em nome dele para serviços em que ele está logado e ler as respostas.

Por que o erro aparece

O navegador pergunta ao servidor se aquela origem tem permissão. A resposta vem em cabeçalhos HTTP. Se o servidor não envia o cabeçalho que autoriza a sua origem, o navegador descarta a resposta e mostra o erro.

Dois detalhes ajudam a entender:

  • A requisição pode até chegar ao servidor e ser processada. Quem bloqueia a leitura é o navegador.
  • Em pedidos com métodos como PUT e DELETE, ou com cabeçalhos personalizados, o navegador envia antes uma consulta de verificação, chamada preflight, usando o método OPTIONS. O servidor precisa responder a ela corretamente.

Como resolver do jeito certo

A correção fica no servidor ou na API que você está chamando. O cabeçalho principal é o Access-Control-Allow-Origin, que indica qual origem tem permissão. Também podem ser necessários o Access-Control-Allow-Methods e o Access-Control-Allow-Headers.

Passos práticos:

  1. Abra a aba de rede do navegador e confira a resposta da requisição, inclusive a do preflight.
  2. Veja se os cabeçalhos de CORS estão presentes e se a origem listada é exatamente a do seu site, sem diferença de protocolo ou porta.
  3. Configure o servidor para permitir apenas os domínios necessários. A maioria dos frameworks tem um recurso ou pacote próprio para isso.
  4. Se a API for de terceiros e você não controla o servidor, faça a chamada pelo seu próprio back-end e entregue o resultado ao front-end.

O que não fazer

Evite liberar todas as origens em uma API que devolve dados privados só para o erro desaparecer. Evite também depender de extensões que desligam o CORS: elas ajudam no teste local, mas não mudam nada para quem acessa seu site.

Se você está começando a conectar front-end e back-end, vale entender antes o que é API e para que serve. Com essa base, o CORS deixa de ser um mistério e vira só mais um item de configuração.

  • Cors
  • Api
  • Navegador
  • Desenvolvimento

Perguntas frequentes

O erro de CORS acontece no servidor ou no navegador?

O bloqueio é feito pelo navegador, mas a solução está no servidor, que precisa informar quais origens podem acessá-lo. Por isso o mesmo pedido funciona em ferramentas fora do navegador.

Posso liberar todas as origens para o erro sumir?

Dá para liberar qualquer origem, mas isso reduz a proteção e não é recomendado em APIs com dados de usuários. O ideal é listar apenas os domínios que você realmente usa.

Extensão de navegador que desativa o CORS resolve?

Só no seu computador, para testes. Seus usuários continuarão vendo o erro, então a correção definitiva precisa ser feita na configuração do servidor.

Leia também

Criação de Apps

O que é API e para que serve, explicado sem complicação

A ideia por trás das APIs com exemplos do dia a dia, termos explicados e um primeiro teste prático.

· 5 min de leitura
Criação de Apps

Erro 404 e erro 500: o que significam e como resolver

O 404 indica página não encontrada, e o 500 indica falha dentro do servidor do site.

· 3 min de leitura
Criação de Apps

App nativo, híbrido ou web: qual tipo escolher para o seu projeto

As diferenças entre app nativo, multiplataforma, híbrido e web, e como decidir conforme o seu projeto.

· 5 min de leitura
Criação de Apps

Briefing para contratar um sistema: o que escrever antes do orçamento

Um roteiro de perguntas que transforma uma ideia solta em um documento que o desenvolvedor consegue orçar.

· 5 min de leitura

Deixe seu comentário