Skip to content

CORS (Cross-Origin Resource Sharing)

O Compartilhamento de Recursos de Origem Cruzada (CORS) é um mecanismo que utiliza cabeçalhos HTTP adicionais para informar aos navegadores que um aplicativo Web rodando em uma origem tem permissão para acessar recursos selecionados de um servidor em uma origem diferente.

Como funciona?

Quando o Front-end faz uma requisição para uma API em outro domínio, o navegador realiza uma verificação:

  1. Requisições Simples: (GET, POST com certos tipos de conteúdo) são enviadas diretamente, mas o navegador bloqueia a leitura da resposta se o servidor não retornar o cabeçalho Access-Control-Allow-Origin correto.
  2. Requisições Complexas: (PUT, DELETE, ou com cabeçalhos customizados) disparam uma requisição Preflight automática do tipo OPTIONS. O servidor deve autorizar o método e os cabeçalhos antes da requisição real ser enviada.

Como fazer vs Como não fazer

✅ Como fazer

  • No Backend, configure o cabeçalho Access-Control-Allow-Origin para permitir apenas os domínios específicos da empresa (ex: https://teleconsulta.portaltelemedicina.com.br).
  • Se precisar permitir múltiplos domínios, verifique a origem da requisição (Origin header) contra uma lista branca (whitelist) no código do servidor e retorne essa origem no cabeçalho.
  • Configure Access-Control-Allow-Credentials: true apenas se realmente precisar enviar cookies ou cabeçalhos de autorização entre origens.

❌ Como não fazer

  • Jamais use Access-Control-Allow-Origin: * em APIs que lidam com dados sensíveis, informações de saúde ou autenticação de usuários. Isso permite que qualquer site no mundo faça requisições para sua API em nome do usuário.
  • Não confie no CORS como uma ferramenta de segurança para impedir que alguém acesse sua API (isso é feito com autenticação). O CORS é uma ferramenta para o navegador proteger o usuário final de acessos maliciosos via scripts.
  • Não configure cabeçalhos de CORS de forma permissiva demais ("wildcards" em métodos ou headers) apenas para "parar de dar erro no console". Entenda o que sua aplicação precisa e libere apenas o necessário.