CORS error fetch API como resolver passo a passo
Descubra como resolver o CORS error fetch API passo a passo. Elimine falhas de requisição e entenda o CORS de forma definitiva para seus projetos
CORS error fetch API como resolver passo a passo
CORS Error com Fetch API: Como Resolver Passo a Passo Definitivo
O CORS error fetch API como resolver passo a passo é um dos desafios mais comuns e frustrantes para desenvolvedores web que interagem com APIs. Você está construindo uma aplicação frontend com JavaScript (React, Angular, Vue ou vanilla JS) e precisa buscar dados de um servidor diferente do seu. De repente, o console do navegador exibe uma mensagem de erro vermelha sobre CORS (Cross-Origin Resource Sharing) e suas requisições fetch falham.
Este guia completo vai desmistificar o CORS error fetch API como resolver passo a passo, explicando o que é, por que acontece e, o mais importante, como resolvê-lo de forma eficaz, tanto no lado do servidor quanto com soluções alternativas no cliente.
O Que é CORS? Entendendo a Política de Segurança
CORS, ou Compartilhamento de Recursos de Origem Cruzada, é um mecanismo de segurança implementado pelos navegadores para restringir requisições HTTP feitas de uma origem (domínio, protocolo e porta) para outra origem. Essa restrição é conhecida como “política de mesma origem” (Same-Origin Policy).
A política de mesma origem existe para proteger os usuários contra ataques maliciosos, como a injeção de scripts que roubam informações confidenciais de outros sites. No entanto, em cenários legítimos (como uma API REST em um domínio e um frontend em outro), essa política precisa ser relaxada de forma controlada. É aí que o CORS error fetch API como resolver passo a passo entra em cena.
Entendendo o CORS Error com Fetch API
Quando sua aplicação frontend (ex: minhaapp.com) tenta fazer uma requisição fetch para uma API em um domínio diferente (ex: api.servidor.com), o navegador intercepta essa requisição. Se o servidor da API não responder com os cabeçalhos CORS apropriados, o navegador bloqueia a resposta, e você vê um erro como:
Access to fetch at 'http://api.servidor.com/data' from origin 'http://minhaapp.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Isso significa que o servidor da API não autorizou explicitamente sua aplicação a acessar seus recursos. Para resolver o CORS error fetch API como resolver passo a passo, precisamos configurar o servidor para permitir essa comunicação.
Como Resolver o CORS Error Fetch API: Soluções no Servidor (Backend)
A solução mais robusta e recomendada para o CORS error fetch API como resolver passo a passo é configurar o servidor da API para enviar os cabeçalhos HTTP CORS corretos. Isso garante que o navegador permita a comunicação.
1. Adicionar Headers Access-Control-Allow-Origin
Este é o cabeçalho mais importante. Ele indica quais origens (domínios) têm permissão para acessar os recursos da API. Pode ser um domínio específico, vários domínios ou um curinga (*).
-
Para Origens Específicas (Recomendado para Produção):
Defina o valor para a URL exata do seu frontend. Se você tiver múltiplos frontends, poderá adicionar lógica no servidor para permitir diferentes origens com base na requisição.
Access-Control-Allow-Origin: http://localhost:3000 -
Para Qualquer Origem (Apenas para Desenvolvimento ou APIs Públicas):
Usar
*permite que qualquer origem acesse seus recursos. Isso é útil durante o desenvolvimento, mas pode ser um risco de segurança em produção se a API não for pública.Access-Control-Allow-Origin: *
Exemplo de Código (Node.js com Express):
const express = require('express');
const app = express();
app.use((req, res, next) => {
// Permite acesso de qualquer origem (use domínio específico em produção)
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
// Métodos HTTP que podem ser usados
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
// Cabeçalhos que o cliente pode enviar
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// Permite que credenciais (cookies, headers de autorização) sejam enviadas
res.setHeader('Access-Control-Allow-Credentials', 'true');
next();
});
// Suas rotas da API aqui
app.get('/api/data', (req, res) => {
res.json({ message: 'Dados da API' });
});
app.listen(5000, () => {
console.log('API rodando na porta 5000');
});
2. Lidando com Requisições Pré-voo (Preflight Requests)
Para requisições HTTP mais complexas (que não são GET simples, POST com Content-Type: application/x-www-form-urlencoded, etc.), como PUT, DELETE ou requisições com cabeçalhos personalizados, o navegador envia uma requisição “pré-voo” (preflight request) com o método OPTIONS antes da requisição real. Esta requisição verifica se o servidor permitirá a requisição real.
Seu servidor precisa responder a essas requisições OPTIONS com um status 200 OK e os cabeçalhos CORS apropriados, incluindo Access-Control-Allow-Methods (listando os métodos permitidos) e Access-Control-Allow-Headers (listando os cabeçalhos personalizados permitidos).
Exemplo de Código (Node.js com Express - complemento ao anterior):
// Responde a requisições preflight OPTIONS
app.options('*', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.sendStatus(200); // Responde com sucesso para a requisição OPTIONS
});
3. Configurações Específicas para Frameworks/Plataformas
Muitos frameworks backend possuem middlewares ou plugins para facilitar a configuração do CORS, simplificando o processo de resolver o CORS error fetch API como resolver passo a passo:
- Python (Django, Flask): Bibliotecas como
django-cors-headersouFlask-Cors. - PHP (Laravel): Pacote
barryvdh/laravel-cors. - Java (Spring Boot): Configurações de CORS dentro do Spring Security ou via
WebMvcConfigurer. - AWS API Gateway: Permite configurar CORS diretamente na interface do serviço para suas APIs.
Soluções no Cliente (Frontend) - Usos Limitados e Alternativas
Embora as soluções no servidor sejam as mais recomendadas, existem algumas alternativas no cliente, geralmente usadas para desenvolvimento ou quando você não tem controle sobre o servidor da API.
1. Usar um Proxy
Um proxy é um servidor intermediário que encaminha suas requisições. O cliente faz a requisição para o proxy (que está na mesma origem), e o proxy, por sua vez, faz a requisição para a API externa. Como o proxy está no seu servidor, a política de mesma origem não se aplica ao proxy. O proxy então repassa a resposta para o cliente.
Exemplo (React com Create React App via package.json):
No seu arquivo package.json, adicione a linha:
"proxy": "http://localhost:5000"
Agora, quando você fizer uma requisição fetch('/api/data') no frontend, ela será automaticamente proxyficada para http://localhost:5000/api/data. Note que a API real deve estar rodando em http://localhost:5000.
2. Modificar o Navegador (Apenas para Desenvolvimento e Testes)
Existem extensões de navegador (como “CORS Unblock” ou “Allow CORS”) que desativam ou modificam a política de CORS localmente. Esta é uma solução extremamente perigosa e NUNCA deve ser usada em um ambiente de produção ou para navegação geral, pois desabilita recursos de segurança importantes do navegador. É útil apenas para testes rápidos em ambientes de desenvolvimento controlados.
Verificando e Depurando o CORS Error
Para entender e resolver o CORS error fetch API como resolver passo a passo, as ferramentas de desenvolvedor do seu navegador são indispensáveis:
- Console: Verifique as mensagens de erro explícitas do CORS.
- Network Tab:
- Examine a requisição
OPTIONS(se houver) e a requisição real. - Observe os cabeçalhos de resposta do servidor. Procure por
Access-Control-Allow-Origin,Access-Control-Allow-Methods,Access-Control-Allow-Headers. - Certifique-se de que os valores desses cabeçalhos correspondem ao que sua aplicação espera.
- Examine a requisição
Conclusão
O CORS error fetch API como resolver passo a passo é um obstáculo comum, mas totalmente superável. A chave está em compreender a natureza da política de segurança do navegador e configurar corretamente o servidor da sua API para permitir requisições de origens cruzadas. Priorize sempre as configurações no servidor, pois são as mais seguras e robustas. Com as estratégias apresentadas neste guia, você estará bem equipado para implementar essas soluções e dizer adeus aos problemas de CORS em suas aplicações!
Sobre Marcos Costa
Desenvolvedor backend com foco em arquitetura de software, automação e produtos digitais.
Ver mais artigos

