Solução de problemas 8 min de leitura

Failed to Fetch: O Que Significa e Como Resolver

Apareceu "Failed to fetch" no app, site ou código? Não é vírus nem problema seu. O que significa em português e como resolver em 2 minutos.

Shabnam Katoch

Shabnam Katoch

Growth Head

Failed to Fetch: o que significa e como resolver no app, no site ou no código

Apareceu "Failed to fetch" na tela e nada funciona? Calma. Não é vírus, não é hackeamento e, na maioria das vezes, nem é culpa sua. Aqui está o que o erro significa em português e como resolver, primeiro para quem só está usando um app, depois para quem está escrevendo o código.

Você clicou num botão. Esperou. E em vez do resultado apareceu isto: Failed to fetch.

Traduzindo ao pé da letra, é "falha ao buscar". O navegador tentou buscar dados num servidor e não recebeu resposta nenhuma. Não um erro. Nenhuma resposta.

Essa diferença é a chave de tudo. Um erro 404 quer dizer "cheguei ao servidor e ele disse que a página não existe". Um "Failed to fetch" quer dizer "nem consegui conversar com o servidor". Por isso a mensagem é tão vaga: o navegador não sabe o que aconteceu do outro lado, só sabe que ninguém respondeu.

Um 404 é uma resposta do servidor; Failed to fetch é silêncio, sem resposta nenhuma

Primeiro: onde esse erro apareceu?

O caminho para resolver depende totalmente disso. Escolha o seu:

Apareceu num app ou site que não é seu (um sistema da empresa, um app no celular, uma ferramenta online). Siga para a próxima seção. Você não precisa saber programar.

Apareceu no seu próprio código (JavaScript, Node.js, um backend em Python). Pule para Correções para desenvolvedores.

Apareceu num agente de IA (n8n, OpenClaw, Ollama). Tem uma seção só para isso mais abaixo.

Apareceu num app ou site: o que fazer

Aqui vai a notícia boa: se você só está usando o app, quase sempre não foi você que quebrou nada. Faça estes testes na ordem, porque cada um descarta uma causa.

  1. Recarregue de verdade. No computador, use Ctrl+Shift+R (Cmd+Shift+R no Mac), que ignora o cache. No celular, feche o app por completo e abra de novo. Parece bobo, mas resolve uma boa parte dos casos em que a requisição foi interrompida no meio.
  2. Teste numa aba anônima. Se funcionar ali e não na aba normal, o culpado é uma extensão, quase sempre um bloqueador de anúncios ou de privacidade. Desative as extensões uma por uma até achar qual é.
  3. Desligue a VPN, o proxy ou o antivírus por um minuto. Qualquer coisa que fique entre o seu navegador e a internet pode barrar a requisição sem avisar. Firewall de rede corporativa também entra nessa lista.
  4. Troque de rede. Saia do Wi-Fi e use os dados do celular, ou o contrário. Se funcionar numa rede e não na outra, o problema é a rede (DNS, bloqueio da empresa, roteador), não o app.
  5. Talvez o serviço esteja fora do ar. Se nada disso resolveu e o erro aparece em qualquer rede e em qualquer navegador, provavelmente o servidor do serviço caiu. Não há nada para você consertar. Espere alguns minutos e tente de novo.

Se funcionou numa aba anônima, numa outra rede ou num outro dispositivo, o app está bom. O problema está entre você e ele.

Teste nesta ordem: recarregar, aba anônima, VPN e proxy, Wi-Fi ou 4G/5G, servidor fora do ar

A mensagem muda conforme o navegador

É o mesmo erro com nomes diferentes. Se você chegou aqui procurando uma dessas frases, está no lugar certo:

Onde apareceMensagem exata
Chrome, Edge, Brave, OperaTypeError: Failed to fetch
FirefoxTypeError: NetworkError when attempting to fetch resource.
Safari (Mac e iPhone)TypeError: Load failed
Node.js (servidor)TypeError: fetch failed

As três primeiras significam exatamente a mesma coisa. A última, do Node.js, parece igual mas é outro bicho, e tem uma seção própria mais abaixo.

Tabela de diagnóstico

Use o sintoma para chegar à causa sem adivinhar:

O que você observaCausa provávelO que fazer
Funciona em aba anônima, falha na normalExtensão ou bloqueador de anúnciosDesativar extensões uma a uma
Funciona no 4G/5G, falha no Wi-FiRede, DNS ou firewallTrocar de rede ou de DNS
Falha para todo mundo, em qualquer redeServidor fora do arAguardar
Console mostra blocked by CORS policyCORSConfigurar o servidor (veja abaixo)
Console mostra Mixed ContentPágina HTTPS chamando HTTPUsar https:// na URL
A URL abre direto no navegador, mas o fetch falhaQuase sempre CORSConfigurar o servidor
Node.js mostra fetch failedRede do lado do servidorLer o error.cause

Correções para desenvolvedores

Se o erro está no seu código, a primeira regra é esta: "Failed to fetch" nunca é a mensagem verdadeira. Abra o console do navegador (F12) e procure a linha logo acima ou abaixo. Ela quase sempre diz o motivo real.

JavaScript no navegador

Um teste resolve metade dos casos. Rode a mesma URL no terminal:

curl -I https://api.seusite.com.br/dados

Se o curl responder e o fetch falhar, o problema é CORS, não o servidor. O curl não aplica regras de CORS. O navegador aplica.

Um teste resolve: curl responde, fetch falha, então o problema é CORS e não o servidor

E CORS se resolve no servidor, não no front-end. O servidor precisa devolver o cabeçalho Access-Control-Allow-Origin com a origem do seu site. Se você não controla esse servidor, a saída é um proxy no seu próprio backend.

Um erro muito comum é tentar "resolver" com isto:

fetch(url, { mode: 'no-cors' })

Isso não resolve. O erro some, mas a resposta volta "opaca": o status fica 0 e você não consegue ler o corpo. Você troca um erro visível por um bug silencioso.

mode no-cors não resolve, só esconde: a resposta opaca volta com status 0 e corpo ilegível

As outras causas no navegador, em ordem de frequência:

  • URL, porta ou DNS errados. Um erro de digitação no domínio, a porta errada, ou o servidor local que você esqueceu de subir.
  • Conteúdo misto. Sua página está em https:// e o fetch aponta para http://. O navegador bloqueia sem pedir licença.
  • Requisição interrompida. Um redirecionamento (window.location = ...) ou um recarregamento logo depois do fetch cancela a requisição antes da resposta chegar.
  • Certificado inválido. Um HTTPS com certificado autoassinado ou expirado também aparece como "Failed to fetch".

Node.js: "fetch failed" não é "Failed to fetch"

No Node.js a mensagem é parecida, mas o contexto é outro. Não existe CORS no Node. Se você vê TypeError: fetch failed, o problema é de rede do lado do servidor, e o motivo real está escondido no cause:

try {
  await fetch(url);
} catch (err) {
  console.error(err.cause); // o motivo verdadeiro está aqui
}

O que o cause costuma mostrar:

err.causeSignifica
ECONNREFUSEDNada está escutando naquela porta. O serviço não está rodando.
ENOTFOUNDO DNS não achou o domínio. Erro de digitação ou rede sem DNS.
UND_ERR_CONNECT_TIMEOUTTentou conectar e desistiu. Firewall ou servidor lento.
Erro de certificadoHTTPS com certificado autoassinado ou inválido.

Uma pegadinha clássica: em algumas versões do Node, localhost resolve primeiro para o endereço IPv6 (::1). Se o seu servidor escuta só em 127.0.0.1, a conexão é recusada. Trocar localhost por 127.0.0.1 na URL resolve na hora.

O motivo está no err.cause: ECONNREFUSED, ENOTFOUND e timeout, e localhost trocado por 127.0.0.1

Python: quando o backend é seu

O Python não gera "Failed to fetch". Mas se o seu backend é em Python (FastAPI, Flask, Django) e o seu front-end mostra esse erro, quase sempre falta configurar o CORS no servidor Python.

FastAPI:

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://seusite.com.br"],
    allow_methods=["*"],
    allow_headers=["*"],
)

Flask:

from flask_cors import CORS
CORS(app, origins=["https://seusite.com.br"])

Um detalhe que pega muita gente: se a requisição envia credenciais (cookies), o navegador rejeita Access-Control-Allow-Origin: *. Nesse caso, liste as origens de forma explícita, como nos exemplos acima.

E se o Python é o cliente, o equivalente ao "Failed to fetch" é a requests.exceptions.ConnectionError. Mesmo significado: o servidor não respondeu.

Failed to fetch em agentes de IA: n8n, OpenClaw e Ollama

Esse erro aparece muito em quem está montando agentes de IA com modelos locais. E quase sempre a causa é uma de três.

Ollama: o servidor não está rodando ou não está visível

O Ollama escuta por padrão na porta 11434, e só na sua própria máquina. Três situações geram o erro:

  • O Ollama não está rodando. Rode ollama serve e tente de novo. Se a porta responder, o problema era só esse.
  • Você está acessando de outra máquina ou de um container. Por padrão o Ollama só aceita conexões locais. Defina OLLAMA_HOST=0.0.0.0 antes de iniciar para ele escutar em todas as interfaces.
  • Um front-end no navegador chama o Ollama direto. Aí é CORS de novo. O Ollama aceita origens extras pela variável OLLAMA_ORIGINS.

n8n no Docker: o localhost que não é o seu

Esse é o mais traiçoeiro. Se o n8n roda num container Docker e você configura o Ollama como http://localhost:11434, o localhost ali dentro é o próprio container, não o seu computador. Por isso a conexão falha mesmo com o Ollama funcionando perfeitamente.

A correção é trocar o endereço por:

http://host.docker.internal:11434

Isso funciona direto no Docker Desktop (Windows e Mac). No Linux, adicione --add-host=host.docker.internal:host-gateway ao iniciar o container.

Localhost errado: dentro do container do n8n, localhost aponta para o próprio container; use host.docker.internal

OpenClaw

No OpenClaw, o "fetch failed" quase sempre aponta para o endpoint do modelo, geralmente um Ollama que não está acessível. Temos um guia só com as variações desse erro em OpenClaw Ollama fetch failed, e um passo a passo para conexão recusada e timeout no Ollama.

Ainda com erro?

Se você passou por tudo e o erro continua, cole a mensagem exata no nosso decodificador de erros do OpenClaw. Ele mostra a causa provável e a correção para as variações mais comuns.

E um último conselho, que vale mais que qualquer comando desta página: "Failed to fetch" não é um diagnóstico, é um sintoma. É o navegador dizendo "não ouvi resposta" sem saber o porquê. A pista verdadeira quase sempre está uma linha acima no console, e o curl separa em segundos um problema de rede de um problema de CORS.

Para quem não programa, a lição é ainda mais simples. Se funcionou em outra aba, em outra rede ou em outro aparelho, você não quebrou nada.

Se você chegou até aqui porque estava montando um agente de IA e passou mais tempo brigando com rede do que construindo o agente, experimente o BetterClaw. O plano grátis tem 1 agente e 100 créditos por mês, sem cartão de crédito e sem prazo para acabar, e você usa sua própria chave de API. Quando precisar de mais, o Pro custa US$ 49 por mês, cobrado em dólar. Comece grátis ou veja os detalhes dos planos.

Perguntas frequentes

O que significa "Failed to fetch"?

Significa "falha ao buscar": o navegador tentou buscar dados num servidor e não recebeu nenhuma resposta. Não é um erro 404 ou 500, porque nesses casos o servidor chegou a responder. As causas mais comuns são bloqueio de CORS, servidor fora do ar, URL errada, página HTTPS chamando HTTP ou uma extensão bloqueando a requisição.

Qual a diferença entre "Failed to fetch" e "fetch failed"?

"Failed to fetch" vem do navegador (Chrome, Edge) e muitas vezes é CORS. "fetch failed" vem do Node.js, onde CORS nem existe, e significa um problema de rede do lado do servidor. No Node, leia o err.cause para ver o motivo real, como ECONNREFUSED ou ENOTFOUND.

Como resolver "Failed to fetch" no celular?

Feche o app por completo e abra de novo, depois troque entre Wi-Fi e dados móveis para descartar a rede. Se tiver VPN ou bloqueador de anúncios ativo, desligue por um minuto e teste. Se o erro aparece em qualquer rede, provavelmente o serviço está fora do ar e basta esperar.

Vale a pena usar mode: 'no-cors' para resolver?

Não. Com no-cors o erro some da tela, mas a resposta volta "opaca": status 0 e corpo ilegível pelo seu código. Você troca um erro visível por um bug silencioso. A correção de verdade é o servidor enviar o cabeçalho Access-Control-Allow-Origin com a origem do seu site.

"Failed to fetch" é vírus ou sinal de que fui hackeado?

Não. É uma mensagem técnica comum que só indica que uma requisição não recebeu resposta. Não tem relação com vírus nem com invasão. Na maioria das vezes a causa é uma extensão do navegador, a rede que você está usando ou o próprio serviço fora do ar.

Cansou de depurar?

O BetterClaw cuida da configuração, do OAuth e da implantação. Seu agente fica no ar em 60 segundos.

Comece grátis
Tags:failed to fetch o que significafailed to fetch como resolvererro failed to fetchtypeerror failed to fetchfailed to fetch traduçãofetch failed nodefailed to fetch corsload failed safari
Share this article
Was this helpful?