- Katılım
- 21 May 2023
- Mesajlar
- 752
- Tepki
- 17
- Puan
- 18
"Site hata veriyor" cümlesi tek başına teşhis sağlamıyor. Web tarafında hata, ekrandaki metin değil, sunucunun döndürdüğü üç haneli bir sayı; o sayının ilk hanesi sorunun hangi tarafta olduğunu da söylüyor.
Aşağıda durum kodunun standarttaki tanımını, beş sınıfın ne anlattığını, istemci ile sunucu hatası ayrımını ve kodların genişletilebilir olmasının ne demek olduğunu HTTP belirtimine bakarak topluyoruz.
Durum kodu nedir?
RFC 9110 tanımı açık veriyor: yanıtın durum kodu, isteğin sonucunu ve yanıtın anlamını tanımlayan üç haneli tam sayı koddur.
Kapsam da belirtiliyor: bu tanım, isteğin başarılı olup olmadığını ve varsa hangi içeriğin bulunduğunu içeriyor.
Sayı aralığı da sabit: geçerli bütün durum kodları 100 ile 599 arasında yer alıyor.
Belge okuma kuralını da veriyor: ilk hane yanıtın sınıfını tanımlıyor, son iki hanenin ise sınıflandırma açısından bir rolü bulunmuyor.
- Biçim: Üç haneli tam sayı.
- Aralık: 100 ile 599.
- Anlam: İlk hane sınıfı belirliyor.
Beş sınıf
Belirtim ilk hane için beş değer tanımlıyor ve her birini tek cümleyle açıklıyor.
1xx bilgilendirme sınıfı: istek alındı, işlem sürüyor.
2xx başarı sınıfı: istek başarıyla alındı, anlaşıldı ve kabul edildi.
3xx yönlendirme sınıfı: isteği tamamlamak için ek işlem yapılması gerekiyor.
4xx istemci hatası sınıfı: istek hatalı söz dizimi içeriyor ya da yerine getirilemiyor.
5xx sunucu hatası sınıfı: sunucu, görünüşte geçerli bir isteği yerine getiremedi.
Püf nokta' Alıntı:4xx ile 5xx arasındaki fark suçu değil, düzeltmenin hangi tarafta yapılacağını gösteriyor.
İstemci hatası ne demek?
Belirtimin tanımı iki durumu birden kapsıyor: isteğin hatalı söz dizimi içermesi veya yerine getirilememesi.
Belge somut bir örnek de veriyor. Sunucu, işlemek istediğinden daha büyük bir başlık alanı satırı, alan değeri ya da alan kümesi alırsa uygun bir istemci hatası koduyla yanıt vermek zorunda.
Gerekçe de yazılı: bu tür başlık alanlarını yok saymak, sunucunun istek kaçakçılığı saldırılarına karşı savunmasızlığını artırıyor.
Bu örnek, istemci hatasının her zaman "kullanıcı yanlış yaptı" anlamına gelmediğini gösteriyor; isteğin biçimiyle ilgili bir sınır aşımı da bu sınıfa giriyor.
Sunucu hatası ne demek?
Tanımdaki "görünüşte geçerli" ifadesi belirleyici. İstek kurallara uygun geldiği hâlde sunucu onu yerine getiremiyorsa yanıt bu sınıfa düşüyor.
Bu ayrım teşhiste ilk adımı belirliyor. 4xx görüldüğünde isteği oluşturan tarafta, 5xx görüldüğünde ise yanıtı üreten tarafta arama yapmak gerekiyor.
Belirtim, sunucunun saatinin bulunup bulunmamasına göre yanıt başlıklarında ne yapılacağını da düzenliyor; saati olan bir köken sunucu başarı, yönlendirme ve istemci hatası yanıtlarında tarih başlığı üretmek zorunda, bilgilendirme ve sunucu hatası yanıtlarında ise üretebiliyor.
Ekrandaki metin ile kod aynı şey değil
Ziyaretçinin gördüğü sayfa, sunucunun döndürdüğü koddan bağımsız olarak tasarlanabiliyor. Bu yüzden "hata sayfası" görünmesi tek başına hangi kodun döndüğünü söylemiyor.
Ters durum da mümkün: sayfa normal görünürken sunucu bir hata kodu döndürebiliyor. Arama motorları ve izleme araçları metne değil koda baktığı için bu fark önem taşıyor.
Teşhiste bu yüzden ilk adım kodu görmek oluyor. Tarayıcının geliştirici araçlarındaki ağ sekmesi ya da sunucu kayıtları, ekrandaki metinden daha güvenilir bilgi veriyor.
Aynı sorun neden farklı kod verebiliyor?
Bir isteğin yolu üzerinde birden çok bileşen bulunuyor. Aradaki bir katman isteği hiç iletemeden yanıt üretebiliyor; bu durumda kod, arka uçtaki uygulamadan değil o katmandan geliyor.
Belirtimin sınıf tanımları bu yüzden yönlendirici oluyor: kodun sınıfı, sorunun hangi aşamada oluştuğunu daraltıyor.
Kalıcılık da ayrı bir boyut. Aynı sınıf içindeki kodlar, durumun geçici mi kalıcı mı olduğunu ayırt etmeye yarıyor; bu ayrım hem tekrar deneme davranışını hem arama motorlarının tepkisini belirliyor.
Kodlar genişletilebilir
Belirtim listenin kapalı olmadığını söylüyor: HTTP durum kodları genişletilebilir.
Bunun sonucu, istemcinin tanımadığı bir kodla karşılaşabilmesi. Böyle bir durumda okuma kuralı devreye giriyor: ilk haneye bakarak sınıfı anlamak yeterli oluyor.
Bu tasarım, protokolün zaman içinde yeni kodlarla genişlemesine imkân verirken eski istemcilerin de çalışmayı sürdürmesini sağlıyor.
Sunucunun geçici olarak hizmet veremediği durumu 503 hatası yazımızda, silinen sayfa için hangi kodun doğru olduğunu 404 ve 410 yazımızda ele almıştık.
Sorunun hangi tarafta olduğunu ayırt etmenin yolunu ise site açılmıyor yazımızda anlatmıştık.
Sık Sorulan Sorular
Hata ne demek?
Web tarafında karşılığı durum kodu: isteğin sonucunu tanımlayan üç haneli sayı.
Kaç sınıf var?
Beş: bilgilendirme, başarı, yönlendirme, istemci hatası ve sunucu hatası.
4xx ile 5xx farkı ne?
4xx istek hatalı ya da yerine getirilemiyor; 5xx sunucu, görünüşte geçerli bir isteği yerine getiremiyor.
Son iki hane ne anlatıyor?
Belirtime göre sınıflandırma açısından bir rolleri yok.
Yeni kodlar eklenebilir mi?
Evet. Belirtim durum kodlarının genişletilebilir olduğunu söylüyor.
Özetle
Hata, web tarafında üç haneli bir durum koduyla bildiriliyor ve ilk hane sorunun sınıfını veriyor. Beş sınıf var; teşhis açısından kritik ayrım 4xx ile 5xx arasında. İlki isteğin kendisiyle, ikincisi isteği karşılayan tarafla ilgili. Kod listesi genişletilebilir olduğu için tanınmayan bir kodda ilk haneye bakmak yeterli oluyor.
Ziyaretçilerinizin aldığı hata kodlarını kayıtlarınızdan izliyor musunuz?
Güncelleme: 3 Eylül 2026. RFC 9110 (HTTP Semantics) kontrol edildi.
Dijital Dünyanıza Yön Veren Pusula