Sorun giderme 8 dk okuma

Failed to Fetch Ne Demek? Hatanın Anlamı ve Çözümü

"Failed to fetch" hatası mı aldınız? Virüs değil, çoğu zaman sizin hatanız da değil. Türkçe anlamı ve 2 dakikada çözümü, adım adım.

Shabnam Katoch

Shabnam Katoch

Growth Head

Failed to Fetch ne demek: hatanın anlamı ve çözümü

Ekranda "Failed to fetch" gördünüz ve hiçbir şey çalışmıyor mu? Sakin olun. Bu bir virüs değil, hacklenmediniz ve çoğu zaman sizin hatanız da değil. Bu rehberde hatanın Türkçe anlamını ve nasıl çözüleceğini anlatıyoruz: önce sadece bir uygulamayı kullananlar için, sonra kodu yazanlar için.

Bir butona tıkladınız. Beklediniz. Sonuç yerine ekranda şu çıktı: Failed to fetch.

Türkçesi kabaca "veri alınamadı" ya da "getirilemedi". Tarayıcı bir sunucudan veri istedi ve hiçbir yanıt alamadı. Hatalı bir yanıt değil. Hiç yanıt yok.

Bu fark her şeyin anahtarı. 404 hatası "sunucuya ulaştım, sayfanın olmadığını söyledi" demektir. "Failed to fetch" ise "sunucuyla hiç konuşamadım" demektir. Mesajın bu kadar belirsiz olmasının nedeni de bu: tarayıcı karşı tarafta ne olduğunu bilmiyor, sadece kimsenin yanıt vermediğini biliyor.

404 bir yanıttır, Failed to fetch ise sessizlik: sunucudan hiç yanıt gelmez

Önce şunu belirleyin: hata nerede çıkıyor?

Çözüm yolu tamamen buna bağlı. Size uyanı seçin:

Bir uygulamada veya web sitesinde çıkıyor (bir şirket sistemi, telefondaki bir uygulama, online bir araç). Bir sonraki bölüme geçin. Kod bilmenize gerek yok.

Kendi kodumda çıkıyor (JavaScript, Node.js, Python ile yazılmış bir backend). Geliştiriciler için çözümler bölümüne atlayın.

Bir yapay zeka ajanında çıkıyor (n8n, OpenClaw, Ollama). Aşağıda bunun için ayrı bir bölüm var.

Bir uygulamada veya sitede çıkıyorsa: ne yapmalı

İyi haber şu: sadece uygulamayı kullanıyorsanız, neredeyse her zaman bir şeyi bozan siz değilsiniz. Bu testleri sırayla yapın, çünkü her biri bir nedeni eler.

  1. Sayfayı gerçekten yenileyin. Bilgisayarda önbelleği atlayan Ctrl+Shift+R kısayolunu kullanın (Mac'te Cmd+Shift+R). Telefonda uygulamayı tamamen kapatıp yeniden açın. Basit görünür ama isteğin yarıda kesildiği pek çok durumu çözer.
  2. Gizli pencerede deneyin. Gizli pencerede çalışıyor ama normal pencerede çalışmıyorsa sorun bir uzantıdır, genellikle bir reklam engelleyici veya gizlilik uzantısı. Hangisi olduğunu bulana kadar uzantıları tek tek kapatın.
  3. VPN'i, proxy'yi veya antivirüsü bir dakikalığına kapatın. Tarayıcınız ile internet arasında duran her şey isteği sessizce engelleyebilir. Şirket ağındaki güvenlik duvarı da bu listeye dahildir.
  4. Ağı değiştirin. Wi-Fi'dan çıkıp mobil veriye geçin ya da tersini yapın. Bir ağda çalışıp diğerinde çalışmıyorsa sorun uygulamada değil, ağdadır: DNS, şirket engeli ya da modem.
  5. Hizmet çökmüş olabilir. Bunların hiçbiri işe yaramadıysa ve hata her ağda, her tarayıcıda çıkıyorsa, büyük ihtimalle hizmetin sunucusu çökmüştür. Sizin düzeltebileceğiniz bir şey yok. Birkaç dakika bekleyip tekrar deneyin.

Gizli pencerede, başka bir ağda veya başka bir cihazda çalıştıysa uygulama sağlam demektir. Sorun sizinle uygulama arasında bir yerdedir.

Tek tek eleyin: yenileme, gizli pencere, VPN ve proxy, Wi-Fi veya mobil veri, sunucu çökmüş mü

Mesaj tarayıcıya göre değişir

Aynı hata, farklı isimler. Bu cümlelerden birini aratarak geldiyseniz doğru yerdesiniz. Tarayıcınız Türkçe olsa bile bu mesajlar genellikle İngilizce görünür.

Nerede çıkarTam mesaj
Chrome, Edge, Brave, OperaTypeError: Failed to fetch
FirefoxTypeError: NetworkError when attempting to fetch resource.
Safari (Mac ve iPhone)TypeError: Load failed
Node.js (sunucu tarafı)TypeError: fetch failed

İlk üçü tamamen aynı anlama gelir. Sonuncusu, yani Node.js'teki mesaj, benzer görünür ama başka bir şeydir ve aşağıda kendi bölümü var.

Teşhis tablosu

Tahmin yürütmeden, belirtiden nedene gidin:

Ne görüyorsunuzOlası nedenNe yapmalı
Gizli pencerede çalışıyor, normal pencerede çalışmıyorUzantı veya reklam engelleyiciUzantıları tek tek kapatın
Mobil veride çalışıyor, Wi-Fi'da çalışmıyorAğ, DNS veya güvenlik duvarıAğı ya da DNS'i değiştirin
Herkes için, her ağda çalışmıyorSunucu çökmüşBekleyin
Konsolda blocked by CORS policy yazıyorCORSSunucuyu yapılandırın (aşağıda)
Konsolda Mixed Content yazıyorHTTPS sayfa HTTP adres çağırıyorAdreste https:// kullanın
Adres tarayıcıda açılıyor ama fetch başarısızNeredeyse her zaman CORSSunucuyu yapılandırın
Node.js fetch failed diyorSunucu tarafında ağ sorunuerror.cause değerine bakın

Geliştiriciler için çözümler

Hata sizin kodunuzdaysa ilk kural şu: "Failed to fetch" hiçbir zaman asıl mesaj değildir. Tarayıcı konsolunu (F12) açın ve hemen üstündeki ya da altındaki satıra bakın. Gerçek neden neredeyse her zaman orada yazar.

Tarayıcıda JavaScript

Tek bir test vakaların yarısını çözer. Aynı adresi terminalde çalıştırın:

curl -I https://api.siteniz.com.tr/veri

curl yanıt veriyor ama fetch başarısız oluyorsa sorun sunucu değil, CORS'tur. curl CORS kurallarını uygulamaz. Tarayıcı uygular.

Tek test yeter: curl yanıt veriyor, fetch başarısız, demek ki sorun sunucu değil CORS

CORS da ön yüzde değil, sunucuda çözülür. Sunucunun, sitenizin kaynağını (origin) içeren Access-Control-Allow-Origin başlığını döndürmesi gerekir. O sunucuyu siz yönetmiyorsanız çözüm, kendi backend'inizde bir proxy kurmaktır.

Çok sık yapılan bir hata, sorunu şöyle "çözmeye" çalışmaktır:

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

Bu çözmez. Hata kaybolur ama yanıt "opak" (opaque) gelir: durum kodu 0 olur ve gövdeyi okuyamazsınız. Görünen bir hatayı sessiz bir hatayla takas etmiş olursunuz.

mode no-cors çözmez, sadece gizler: opak yanıt durum kodu 0 ile gelir ve gövde okunamaz

Tarayıcıdaki diğer nedenler, sıklık sırasıyla:

  • Yanlış adres, port veya DNS. Alan adında bir yazım hatası, yanlış port ya da başlatmayı unuttuğunuz yerel sunucu.
  • Karışık içerik (mixed content). Sayfanız https:// üzerinde, fetch ise http:// adresine gidiyor. Tarayıcı izin istemeden engeller.
  • Yarıda kesilen istek. Fetch'ten hemen sonra gelen bir yönlendirme (window.location = ...) ya da sayfa yenileme, yanıt gelmeden isteği iptal eder.
  • Geçersiz sertifika. Kendinden imzalı ya da süresi dolmuş sertifikalı bir HTTPS adresi de "Failed to fetch" olarak görünür.

Node.js: "fetch failed", "Failed to fetch" ile aynı şey değil

Node.js'te mesaj benzer ama bağlam farklıdır. Node'da CORS diye bir şey yoktur. TypeError: fetch failed görüyorsanız sorun sunucu tarafında bir ağ sorunudur ve gerçek neden cause içinde saklıdır:

try {
  await fetch(url);
} catch (err) {
  console.error(err.cause); // asıl neden burada
}

cause genellikle şunlardan birini gösterir:

err.causeAnlamı
ECONNREFUSEDO portu dinleyen hiçbir şey yok. Servis çalışmıyor.
ENOTFOUNDDNS alan adını bulamadı. Yazım hatası ya da DNS'i olmayan bir ağ.
UND_ERR_CONNECT_TIMEOUTBağlanmayı denedi ve vazgeçti. Güvenlik duvarı veya yavaş sunucu.
Sertifika hatasıKendinden imzalı ya da geçersiz sertifikalı HTTPS.

Klasik bir tuzak: Node'un bazı sürümlerinde localhost önce IPv6 adresine (::1) çözümlenir. Sunucunuz sadece 127.0.0.1 üzerinde dinliyorsa bağlantı reddedilir. Adreste localhost yerine 127.0.0.1 yazmak sorunu anında çözer.

Asıl neden err.cause içinde: ECONNREFUSED, ENOTFOUND, zaman aşımı ve localhost yerine 127.0.0.1

Python: backend sizinse

Python "Failed to fetch" üretmez. Ama backend'iniz Python ile (FastAPI, Flask, Django) yazılmışsa ve ön yüzünüz bu hatayı gösteriyorsa, neredeyse her zaman Python sunucusunda CORS ayarı eksiktir.

FastAPI:

from fastapi.middleware.cors import CORSMiddleware

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

Flask:

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

Pek çok kişiyi yakalayan bir ayrıntı: istek kimlik bilgisi (çerez) gönderiyorsa tarayıcı Access-Control-Allow-Origin: * değerini reddeder. Bu durumda kaynakları yukarıdaki örneklerde olduğu gibi tek tek listeleyin.

Python istemci tarafındaysa, "Failed to fetch"in karşılığı requests.exceptions.ConnectionError hatasıdır. Anlamı aynı: sunucu yanıt vermedi.

Yapay zeka ajanlarında "Failed to fetch": n8n, OpenClaw ve Ollama

Bu hata, yerel modellerle yapay zeka ajanı kuranlarda çok sık görülür. Nedeni de neredeyse her zaman şu üçünden biridir.

Ollama: sunucu çalışmıyor ya da görünmüyor

Ollama varsayılan olarak 11434 portunu ve sadece kendi makinenizi dinler. Üç durum bu hatayı üretir:

  • Ollama çalışmıyor. ollama serve komutunu çalıştırıp tekrar deneyin. Port yanıt veriyorsa sorun sadece buydu.
  • Başka bir makineden veya bir container'dan erişiyorsunuz. Ollama varsayılan olarak sadece yerel bağlantıları kabul eder. Tüm arayüzleri dinlemesi için başlatmadan önce OLLAMA_HOST=0.0.0.0 ayarlayın.
  • Tarayıcıdaki bir ön yüz Ollama'yı doğrudan çağırıyor. Bu yine CORS'tur. Ollama ek kaynakları OLLAMA_ORIGINS değişkeniyle kabul eder.

Docker'da n8n: sizin olmayan localhost

En sinsi olanı bu. n8n bir Docker container'ında çalışıyorsa ve Ollama'yı http://localhost:11434 olarak ayarladıysanız, oradaki localhost sizin bilgisayarınız değil, container'ın kendisidir. Bu yüzden Ollama kusursuz çalışırken bile bağlantı başarısız olur.

Çözüm, adresi şununla değiştirmektir:

http://host.docker.internal:11434

Bu, Docker Desktop'ta (Windows ve Mac) doğrudan çalışır. Linux'ta container'ı başlatırken --add-host=host.docker.internal:host-gateway ekleyin.

Sizin olmayan localhost: n8n container'ı içinde localhost container'ın kendisidir, host.docker.internal kullanın

OpenClaw

OpenClaw'da "fetch failed" neredeyse her zaman modelin uç noktasına işaret eder; bu da genellikle erişilemeyen bir Ollama'dır. Bu hatanın tüm varyasyonlarını OpenClaw Ollama fetch failed rehberinde, bağlantı reddi ve zaman aşımı için adım adım çözümü de Ollama bağlantı reddedildi ve zaman aşımı rehberinde topladık.

Hâlâ hata mı alıyorsunuz?

Her şeyi denediniz ve hata sürüyorsa, tam mesajı OpenClaw hata çözücümüze yapıştırın. Olası nedeni ve en yaygın varyasyonların çözümünü gösterir.

Ve bu sayfadaki her komuttan daha değerli bir son tavsiye: "Failed to fetch" bir teşhis değil, bir belirtidir. Tarayıcının nedenini bilmeden "yanıt alamadım" demesidir. Gerçek ipucu neredeyse her zaman konsolda bir satır yukarıdadır ve curl saniyeler içinde bir ağ sorununu bir CORS sorunundan ayırır.

Kod bilmeyenler için ders daha da basit. Başka bir pencerede, başka bir ağda ya da başka bir cihazda çalıştıysa, siz hiçbir şeyi bozmadınız.

Buraya bir yapay zeka ajanı kurarken geldiyseniz ve ajanı yapmaktan çok ağla uğraşarak zaman harcadıysanız, BetterClaw ile başlayın. Ücretsiz planda 1 ajan ve ayda 100 kredi var; kredi kartı yok, süre sınırı yok ve kendi API anahtarınızı kullanırsınız. Daha fazlasına ihtiyaç duyduğunuzda Pro ayda 49 ABD dolarıdır ve dolar üzerinden faturalanır. Ücretsiz başlayın ya da planların ayrıntılarına göz atın.

Sıkça sorulan sorular

"Failed to fetch" ne demek?

"Veri alınamadı" ya da "getirilemedi" demektir: tarayıcı bir sunucudan veri istedi ve hiç yanıt alamadı. 404 veya 500 hatası değildir, çünkü o durumlarda sunucu yanıt vermiştir. En sık nedenler CORS engeli, çökmüş sunucu, yanlış adres, HTTPS bir sayfanın HTTP çağırması ya da isteği engelleyen bir uzantıdır.

"Failed to fetch" ile "fetch failed" arasındaki fark nedir?

"Failed to fetch" tarayıcıdan (Chrome, Edge) gelir ve çoğu zaman CORS kaynaklıdır. "fetch failed" ise Node.js'ten gelir; orada CORS diye bir şey yoktur ve sunucu tarafında bir ağ sorunu anlamına gelir. Node'da asıl nedeni görmek için err.cause değerine bakın, örneğin ECONNREFUSED ya da ENOTFOUND.

Telefonda "Failed to fetch" hatası nasıl çözülür?

Uygulamayı tamamen kapatıp yeniden açın, ardından ağı elemek için Wi-Fi ile mobil veri arasında geçiş yapın. Açık bir VPN ya da reklam engelleyici varsa bir dakikalığına kapatıp deneyin. Hata her ağda çıkıyorsa büyük ihtimalle hizmet çökmüştür ve beklemek yeterlidir.

Sorunu çözmek için mode: 'no-cors' kullanmaya değer mi?

Hayır. no-cors ile hata ekrandan kaybolur ama yanıt "opak" gelir: durum kodu 0 olur ve kodunuz gövdeyi okuyamaz. Görünen bir hatayı sessiz bir hatayla takas etmiş olursunuz. Gerçek çözüm, sunucunun sitenizin kaynağını içeren Access-Control-Allow-Origin başlığını göndermesidir.

"Failed to fetch" virüs mü, hacklendim mi?

Hayır. Sadece bir isteğin yanıt almadığını gösteren yaygın bir teknik mesajdır. Virüsle ya da saldırıyla hiçbir ilgisi yoktur. Çoğu zaman nedeni bir tarayıcı uzantısı, kullandığınız ağ ya da hizmetin kendisinin çökmüş olmasıdır.

Hata ayıklamaktan yoruldunuz mu?

BetterClaw yapılandırmayı, OAuth’u ve dağıtımı sizin yerinize halleder. Ajanınız 60 saniyede yayında.

Ücretsiz başlayın
Etiketler:failed to fetch ne demekfailed to fetch hatasıfailed to fetch hatası çözümütypeerror failed to fetchfailed to fetch türkçefetch failed nodefailed to fetch corsload failed safari
Share this article
Was this helpful?