ERR_EMPTY_RESPONSE Hatası: Nedir ve Nasıl Çözülür?

Advertisement
ERR_EMPTY_RESPONSE Nedir?
ERR_EMPTY_RESPONSE, Chrome ve Edge'in "Bu sayfa çalışmıyor. example.com hiçbir veri göndermedi." (This page isn't working. example.com didn't send any data.) yazan hata sayfasıdır. Chromium içinde bu, -324 numaralı ağ hatasıdır ve şöyle tanımlanır: "The server closed the connection without sending any data" (sunucu, hiçbir veri göndermeden bağlantıyı kapattı).
Tarayıcı, çoğu bağlantı hatasına göre daha ileriye gitmiştir. Adres çözümlenmiş, bağlantı açılmış ve tarayıcı isteğini göndermiştir. Ardından sunucu ya da önündeki bir şey bağlantıyı boş bir yanıtla kapatmıştır: durum kodu yok, başlık yok, sayfa yok. Chromium kodu bu hatayı yalnızca sıfır baytla kapanan yeni bir bağlantı için kullanır. Eski, yeniden kullanılan bir bağlantı kapandığında ise Chrome sessizce yeniden dener.
Bir istek gerçekten teslim edildiği için ERR_EMPTY_RESPONSE genellikle sunucu tarafını işaret eder: isteği işlerken çöken bir uygulama, bağlantıları bilerek düşüren bir kural ya da bağlantıyı kabul eden ama arkasında hiçbir şey olmayan bir hizmet. Kendi bilgisayarınızdaki birkaç neden de bu hataya yol açabilir.
ERR_EMPTY_RESPONSE Hatasına Ne Neden Olur?
| Neden | Nerede | İpucu |
|---|---|---|
| Uygulama isteği işlerken çöktü veya sonlandırıldı | Sunucu | Herkes için başarısız olur, çoğu zaman tek bir ağır sayfada |
| Bağlantıları düşüren bir kural (nginx return 444, WAF, bot koruması) | Sunucu | Yalnızca bazı ziyaretçiler, IP'ler veya user agent'lar için başarısız olur |
| Arkasında dinleyen hiçbir şey olmayan bir port yönlendirmesi (Docker, yük dengeleyici) | Sunucu / geliştirici | Port açık ama her istek boş döner |
| Yalnızca HTTPS konuşan bir porta http:// gönderilmesi | Geliştirici | https:// ile çalışır, http:// ile başarısız olur |
| VPN, proxy veya antivirüsün HTTPS taraması | Cihazınız | Yalnızca sizin cihazınızda veya ağınızda başarısız olur |
| Sunucu için fazla büyük istek veya başlıklar | Sunucu | Oturum açtıktan sonra veya çok sayıda çerezle başarısız olur |
Advertisement
Çözüm 1: Sayfayı Yenileyin ve Gizli Pencereyi Deneyin
Sunucu yanlış anda yeniden başladıysa birkaç saniye sonra sayfayı yenilemeniz yeterlidir. Hata tekrarlanıyorsa sayfayı bir Gizli pencerede açın (Ctrl + Shift + N, Mac'te Cmd + Shift + N). Gizli pencere çerezsiz ve uzantısız başlar; böylece tarayıcınızda saklanan bir şeyin işin içinde olup olmadığını hızla anlarsınız.
Ardından sitenin herkes için çalışmıyor olup olmadığını kontrol edin. DNS Robot'un HTTP Başlık Kontrolü aracı sayfayı bizim sunucularımızdan ister: biz normal bir yanıt alıyorsak sorun sizinle site arasındadır. Biz de hiçbir şey alamıyorsak sitenin kendisi çalışmıyordur.
Çözüm 2: VPN'i, Proxy'yi ve HTTPS Taramasını Kapatın
Bağlantılarınızın ortasında duran her şey isteği kabul edip yanıtı size iletmeden bağlantıyı kapatabilir:
VPN: bağlantıyı tamamen kesin ve sayfayı yenileyin.
Proxy: Windows 11'de Ayarlar → Ağ ve İnternet → Ara sunucu → Ara sunucu kullan seçeneğini kapatın. Mac'te Sistem Ayarları → Ağ → bağlantınız → Ayrıntılar… → Proxy'ler.
Antivirüsün HTTPS taraması: yalnızca web veya HTTPS tarama özelliğini kapatın (genellikle HTTPS taraması, Web Kalkanı veya SSL/TLS protokol filtreleme gibi adlar taşır) ve sayfayı yenileyin. Bu sorunu çözerse site için bir istisna ekleyin ve taramayı yeniden açın.
Advertisement
Çözüm 3: Sitenin Verilerini Temizleyin ve Uzantıları Devre Dışı Bırakın
Çok büyük veya bozulmuş çerezler, sunucunun isteği yanıtlamak yerine düşürmesine yol açabilir; bu da çoğu zaman yalnızca oturum açtıktan sonra çıkan bir hata olarak kendini gösterir. O sitenin çerezlerini temizleyin: adres çubuğunun solundaki simgeye tıklayın → Çerezler ve site verileri (veya Site ayarları) → verileri silin, ardından yeniden oturum açın.
Ardından chrome://extensions adresinden tüm uzantıları devre dışı bırakın ve sayfayı yenileyin. Soruna karışan uzantıyı bulmak için onları teker teker yeniden etkinleştirin; bu genellikle bir reklam engelleyici, bir gizlilik aracı ya da istekleri düzenleyen herhangi bir şeydir.
Çözüm 4: DNS Önbelleğini Temizleyin ve Ağ Yığınını Sıfırlayın
Bir bilgisayarda her site boş yanıt veriyorsa o bilgisayarın ağ yapılandırmasını sıfırlayın. Windows'ta yönetici olarak açılmış Komut İstemi'nde aşağıdaki komutları çalıştırın ve bilgisayarı yeniden başlatın. Mac'te DNS önbelleğini temizleyin ve Wi-Fi ağını kaldırıp yeniden ekleyin.
ipconfig /flushdns
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renewTelefonunuzun mobil verisi gibi başka bir ağı da deneyin. Site orada çalışıyorsa her zamanki ağınızdaki (okul, iş yeri veya ISS) bir filtre bağlantıyı kesiyor olabilir.
Advertisement
Localhost ve Docker'da ERR_EMPTY_RESPONSE
Geliştiriciler bu hatayı en sık kendi makinelerinde görür. Olağan nedenler:
Docker konteynerindeki uygulama 127.0.0.1 üzerinde dinliyor. Bir konteynerin içinde
127.0.0.1"yalnızca bu konteyner" anlamına gelir; bu yüzden Docker'ın port yönlendirmesinin bağlanabileceği bir şey yoktur ve tarayıcınız boş bir yanıt (kuruluma bağlı olarak bazen de bağlantı sıfırlaması) alır. Uygulamanın konteyner içinde0.0.0.0üzerinde dinlemesini sağlayın; örneğinnext dev -H 0.0.0.0,vite --host 0.0.0.0,flask run --host=0.0.0.0veyauvicorn main:app --host 0.0.0.0.Konteyner port eşlemesi uyuşmuyor.
-p 8080:3000, sizin 8080 portunuzu konteynerin içindeki 3000 portuna yönlendirir. Uygulama aslında 5000'de dinliyorsa her istek boş döner.Yalnızca HTTPS konuşan bir portta http://. Bazı sunucular bir portta TLS bekler ve düz HTTP geldiğinde bağlantıyı doğrudan kapatır.
http://yerinehttps://localhost:8443deneyin.Geliştirme sunucusu isteği işlerken çöktü. Sunucunun çalıştığı terminale bakın. O anda oluşan bir istisna ya da bellek yetersizliği hatası, aradığınız cevaptır.
# Tarayıcı olmadan yeniden üretin
curl -v http://localhost:8080/
# "Empty reply from server" = bağlantı kabul edildi, geri hiçbir şey gönderilmedi
# Konteyner hangi portları yayımlıyor ve içinde ne dinliyor?
docker ps --format "table {{.Names}}\t{{.Ports}}"
docker exec -it <container> sh -c "netstat -tlnp 2>/dev/null || ss -tlnp"Web Sitesi Sahipleri İçin: Sunucunuz Neden Boş Yanıt Gönderiyor
Çökmeler ve bellek yetersizliği nedeniyle sonlandırmalar. İsteği işleyen işlem ölürse bağlantı hiçbir şey gönderilmeden kapanır. Özellikle ağır sayfalarda ve dosya yüklemelerinde uygulama günlüklerini ve Linux bellek yetersizliği (OOM) sonlandırıcısı için
dmesg -T | grep -i "killed process"çıktısını kontrol edin.Bilinçli düşürmeler. nginx'in özel
return 444;yönergesi bağlantıyı hiçbir yanıt göndermeden kapatır ve genellikle kötü botları veya bilinmeyen ana makine adlarını engellemek için kullanılır. Böyle bir kural gerçek ziyaretçilerle eşleşirse (aşırı geniş bir user agent veya GeoIP kuralı) ziyaretçiler ERR_EMPTY_RESPONSE görür; HTTP/2 bağlantılarında ise nginx akışı sıfırladığı için ERR_HTTP2_PROTOCOL_ERROR görürler. WAF'lar, hız sınırlayıcılar ve bot koruma hizmetleri de aynısını yapabilir.Arka ucu olmayan port yönlendirmeleri ve yük dengeleyiciler. Bağlantıyı kabul eden ama arkasında sağlıklı bir sunucu olmayan bir dinleyici, bağlantıyı boş kapatabilir. Hedef sağlığını ve arka uç portunun eşleştiğini kontrol edin.
Yanıt vermek yerine bağlantıyı kapatan zaman aşımları. Uzun süren isteklerin soketi sessizce kapatmak yerine düzgün bir hata (örneğin 504) döndürmesini sağlayın; böylece ziyaretçiler ve izleme sistemleri ne olduğunu görebilir.
Fazla büyük istekler. Çok büyük başlıklar veya çerezler bazı sunucuların isteği düşürmesine yol açabilir. Çerezleri küçük tutun.
# Bağlantıları düşüren kural var mı?
sudo grep -rn "return 444" /etc/nginx/
# Ziyaretçilerin bağlandığı şekilde dışarıdan test edin
curl -sv https://yourdomain.com/ -o /dev/nullAdvertisement
ERR_EMPTY_RESPONSE ve Benzer Hatalar
| Hata | Kod | Ne oldu |
|---|---|---|
| ERR_EMPTY_RESPONSE | -324 | İstek gönderildi, bağlantı geriye sıfır bayt dönerek kapandı |
| ERR_CONNECTION_CLOSED | -100 | İstek gönderilemeden, genellikle HTTPS el sıkışması sırasında kapandı |
| ERR_CONNECTION_RESET | -101 | Bağlantı bir TCP sıfırlamasıyla aniden kesildi |
| 502 Bad Gateway | HTTP | Bir proxy yanıt verdi, ancak arkasındaki uygulama başarısız oldu |
İlgili rehberler: ERR_CONNECTION_CLOSED, ERR_CONNECTION_RESET, 502 Bad Gateway ve 500 Internal Server Error. Bir sunucunun portunun dışarıdan bağlantı kabul edip etmediğini kontrol etmek için Port Kontrolü aracını kullanın.
Sunucu ağınızın dışından yanıt veriyor mu?
DNS Robot'un Port Kontrolü aracı, bir alan adının 443 veya 80 portunun bizim sunucularımızdan gelen bağlantıları kabul edip etmediğini test eder. Sunucunun gerçek bir yanıt gönderip göndermediğini görmek için HTTP Başlık Kontrolü aracıyla birlikte kullanın.
Dene Port KontrolüAdvertisement
Sıkça Sorulan Sorular
Tarayıcının sunucuya bağlanıp isteğini gönderdiği, sunucunun ise geriye hiçbir veri göndermeden bağlantıyı kapattığı anlamına gelir: durum kodu yok, başlık yok, sayfa yok. Chromium'da -324 numaralı ağ hatasıdır ve "Bu sayfa çalışmıyor. example.com hiçbir veri göndermedi." olarak gösterilir.