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.

Ö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.
- 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.
- 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.
- 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.
- 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.
- 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.

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 çıkar | Tam mesaj |
|---|---|
| Chrome, Edge, Brave, Opera | TypeError: Failed to fetch |
| Firefox | TypeError: 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üyorsunuz | Olası neden | Ne yapmalı |
|---|---|---|
| Gizli pencerede çalışıyor, normal pencerede çalışmıyor | Uzantı veya reklam engelleyici | Uzantıları tek tek kapatın |
| Mobil veride çalışıyor, Wi-Fi'da çalışmıyor | Ağ, DNS veya güvenlik duvarı | Ağı ya da DNS'i değiştirin |
| Herkes için, her ağda çalışmıyor | Sunucu çökmüş | Bekleyin |
Konsolda blocked by CORS policy yazıyor | CORS | Sunucuyu yapılandırın (aşağıda) |
Konsolda Mixed Content yazıyor | HTTPS sayfa HTTP adres çağırıyor | Adreste https:// kullanın |
| Adres tarayıcıda açılıyor ama fetch başarısız | Neredeyse her zaman CORS | Sunucuyu yapılandırın |
Node.js fetch failed diyor | Sunucu tarafında ağ sorunu | error.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.

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.

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 isehttp://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.cause | Anlamı |
|---|---|
ECONNREFUSED | O portu dinleyen hiçbir şey yok. Servis çalışmıyor. |
ENOTFOUND | DNS alan adını bulamadı. Yazım hatası ya da DNS'i olmayan bir ağ. |
UND_ERR_CONNECT_TIMEOUT | Bağ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.

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 servekomutunu ç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.0ayarlayın. - Tarayıcıdaki bir ön yüz Ollama'yı doğrudan çağırıyor. Bu yine CORS'tur. Ollama ek kaynakları
OLLAMA_ORIGINSdeğ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.

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.




