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:
- 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-Origincorreto. - 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-Originpara 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 (
Originheader) contra uma lista branca (whitelist) no código do servidor e retorne essa origem no cabeçalho. - Configure
Access-Control-Allow-Credentials: trueapenas 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.