Senior Developer Seviyesinde Bir Incident Post‑Mortem

Web projelerinde en tehlikeli hata türü şudur:

Bazen çalışan, bazen tamamen kilitlenen, log bırakmayan hatalar.

Bu yazı; bir WordPress sitesinde hem Bookly rezervasyon sistemi hem de İngilizce seviye tespit sınavı formu üzerinde yaşadığım, saatler süren inceleme sonucunda kaynağını Google Analytics / Google Ads / Microsoft Clarity gibi üçüncü parti scriptlerde bulduğum gerçek bir vaka analizidir.

Ama bu bir “plugin bozuk” yazısı değildir. Bu bir script davranışı, async mimari ve modern tarayıcı güvenlik politikaları yazısıdır.

Hata Mesajı

We faced problems while connecting to the server or receiving data from the server. Please wait for a few seconds and try again. If the problem persists, then check your internet connectivity. If all other sites open fine, then please contact the administrator of this website with the following information. TextStatus: abort HTTP Error: undefined

Sorunun Ortak Belirtileri

İki farklı sistemde (rezervasyon formu ve seviye tespit sınavı) aynı pattern tekrar etti:

  • Form bazen çalışıyor, bazen submit aşamasında kilitleniyor
  • Loader sonsuz dönüyor
  • Sunucu tarafında hata yok
  • Console’da klasik JS error yok
  • Network istekleri abort oluyor
  • HTTP status bazen undefined, bazen 499

Bu noktada şunu anladım:

Sorun backend değil, tarayıcı ile üçüncü parti scriptler arasında yaşanan sessiz bir kopuş.

Teknik Okuma

Teknik Okuma

Ekran Görüntülerinin Söylediği Şey (Teknik Okuma)

İnceleme sırasında console’da tekrar eden kritik satırlar vardı:

  • Failed to load resource: 499 (Request has been forbidden by antivirus)
  • Refused to execute script because its MIME type is image/png
  • TextStatus: abort
  • HTTP Error: undefined

Bu satırlar bize şunu söylüyor:

  1. Script gerçekten yüklenemiyor
  2. Ama bu bir klasik 404 / 500 değil
  3. Tarayıcı veya güvenlik katmanı isteği bilinçli olarak iptal ediyor
  4. İptal edilen script, zincirde başka async işlemleri de yarım bırakıyor

İşte burada form sistemleri kırılıyor.

Neden Bookly’de ve Seviye Tespit Formunda Aynı Anda Oldu?

Çünkü iki sistem de:

  • AJAX kullanıyor
  • Promise tabanlı çalışıyor
  • Submit sonrası server response bekliyor

Ve üçüncü parti scriptler:

  • Aynı event loop içinde
  • Aynı sayfada
  • Aynı lifecycle’da çalışıyor

Bir script iptal edildiğinde:

Bazen sadece kendisi gitmez, başkasını da beraberinde sürükler.

Geliştirici araçları konsolu

Geliştirici araçları konsolu

Gerçek Suçlu: Üçüncü Parti Script Çakışması Hataları Ölçümü & Reklam Scriptleri

Tespit edilen ortak noktalar:

  • Google Analytics (gtag / GA4)
  • Google Ads (doubleclick, conversion)
  • Microsoft Clarity

Bu scriptler:

  • Consent durumuna göre
  • Tarayıcı gizlilik ayarına göre
  • Güvenlik yazılımlarına göre

aynı kullanıcıda bile farklı davranabiliyor.

Bu yüzden hata:

  • deterministik değil
  • tekrar üretmesi zor
  • log bırakmıyor
izleme kodları

izleme kodları

Neden Hata Mesajı Yok?

Çünkü bu bir:

  • Syntax error değil
  • Runtime crash değil

Bu bir:

Sessizce iptal edilen async işlem problemi

Tarayıcı şunu diyor:

“Ben bu isteği güvenli bulmadım, çalıştırmadım.”

Ama uygulama tarafında biri hâlâ cevap bekliyor.

Sorun Nasıl Çözüldü?

Uygulanan yöntem basit ama disiplinliydi:

  1. Tüm üçüncü parti scriptler devre dışı bırakıldı
  2. Formlar defalarca test edildi
  3. Google Analytics ve Ads kodları kaldırıldı
  4. Sorun tamamen ortadan kalktı

Ardından:

  • Scriptler izole
  • Gecikmeli
  • Consent kontrollü

şekilde tekrar eklendi.

Varsa özel güvenlik eklentilerini devre dışı bırak

Varsa özel güvenlik eklentilerini devre dışı bırak

Benzer Sorun Yaşayanlar İçin Checklist

Bazen çalışan / bazen bozulan bir form varsa:

Mini Rehber: Bu Tip Sorunları Nasıl Debug Ederim?

Senior refleksi şudur:

  1. Backend’e saldırma, önce tarayıcıyı suçla
  2. Console error yoksa rahatlama, Network’e bak
  3. Aynı sayfada çalışan üçüncü parti scriptleri listele
  4. Scriptleri ve diğer eklentileri tek tek devre dışı bırak
  5. Async zinciri bozabilecek her şeyi şüpheli say
  6. Varsa özel güvenlik eklentilerini devre dışı bırak
  7. Bilgisayarındaki antivirüs programlarını geçici olarak devre dışı bırak
  8. Eklenti sürümlerinin güncel olup olmadığını kontrol et

Altın kural:

Ölçüm kodları, uygulama akışından her zaman daha önemsizdir.

Sıkça Sorulan Sorular

Google Analytics gerçekten form bozabilir mi?

Evet. Özellikle Consent Mode v2 sonrası, bazı durumlarda script iptal edilir ve async zinciri bozar.

Bu sadece WordPress mi?

Hayır. React, Vue, vanilla JS projelerde de aynı pattern görülür.

Çözüm GA’yı tamamen kaldırmak mı?

Hayır. İzole, gecikmeli ve consent kontrollü kullanmak.

Bookly’ye özel bir bug mı?

Hayır. Bookly sadece bu durumu görünür kılan araç oldu.

Sonuç

Bu vaka bize şunu net gösteriyor:

Modern web’de en tehlikeli hatalar, sessiz olanlardır.

Eğer bir şey:

  • bazen çalışıyor
  • bazen bozuluyor
  • log bırakmıyorsa

mutlaka üçüncü parti scriptleri sorgulayın.

Tunçer ŞEN
American LIFE Dil Okulları Bilişim IT & Web Teknolojileri

Kategoriler:

WordPress,