JavaScript

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

Marcos Costa
Marcos Costa
25 de março de 2026 6 min de leitura
CORS error fetch API como resolver passo a passo

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-headers ou Flask-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.

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!

Marcos Costa

Sobre Marcos Costa

Desenvolvedor backend com foco em arquitetura de software, automação e produtos digitais.

Ver mais artigos