HTTP Durum Kodu Sınıfları: 1xx, 2xx, 3xx, 4xx ve 5xx

HTTP durum kodları, bir isteğin sonucunu ve HTTP yanıtının anlamını üç basamaklı bir sayıyla açıklar. Kodun ilk rakamı yanıtın genel sınıfını belirler; kalan iki rakam ise o sınıf içindeki daha özel durumu tanımlar.
Bir durum kodunu değerlendirirken yalnız sınıfa bakmak yeterli değildir. Örneğin 200 ile 204 aynı başarı sınıfındadır ancak yanıt içeriği bakımından farklıdır; 301 ile 304 ise aynı 3xx sınıfında yer alsa da farklı amaçlara hizmet eder.
HTTP Durum Kodundaki İlk Rakam Ne Anlatır?
Geçerli HTTP durum kodları 100 ile 599 arasındadır. İlk rakam yanıt sınıfını belirler; son iki rakamın ayrıca bir sınıflandırma görevi yoktur. Bu nedenle 404 görüldüğünde önce kodun 4xx istemci hatası sınıfında olduğu anlaşılır, ardından 404'ün özel anlamına bakılır.
Aşağıdaki tablo beş sınıfın temel ayrımını gösterir.
| Sınıf | Genel anlam | Yaygın örnekler | İlk yorum |
|---|---|---|---|
| 1xx | Bilgilendirme | 100, 101 | İsteğin ilerlemesi veya bağlantı durumu hakkında bilgi verilir. |
| 2xx | Başarı | 200, 201, 204 | İstek başarıyla işlendi veya kabul edildi. |
| 3xx | Yönlendirme veya ek işlem | 301, 302, 304 | İstemcinin isteği tamamlamak için ek bir işlem yapması gerekir. |
| 4xx | İstemci hatası | 400, 403, 404 | İstek veya erişim koşullarında sorun olabilir. |
| 5xx | Sunucu hatası | 500, 502, 503, 504 | Sorun sunucuda, ağ geçidinde veya isteğin iletildiği diğer sunucuda olabilir. |
Beş HTTP Durum Kodu Sınıfının Anlamı
Aynı sınıfa giren kodlar aynı genel anlamı paylaşır, ancak her kodun ayrıntılı anlamı farklıdır. Sınıf ilk yorumu verir; kesin anlamı üç basamaklı kodun tamamı belirler.
1xx: Bilgilendirme Yanıtları
1xx kodları, isteğin ilerlemesi veya bağlantı durumu hakkında bilgi veren ara yanıtlardır. Protokol değişmeden süren bir HTTP işleminde, varsa bu ara yanıtların ardından 2xx, 3xx, 4xx ya da 5xx sınıfından tek bir nihai yanıt gelir.
100 Continue, isteğin ilk bölümünün alındığını ve istemcinin isteğin kalanını göndermeye devam edebileceğini belirtir. HTTP/1.1 içinde kullanılan 101 Switching Protocols ise sunucunun istemcinin protokol değiştirme isteğini kabul ettiğini bildirir. 101 sonrasında iletişim yeni protokolün kurallarına göre sürer. Örneğin istemci ile sunucunun aynı bağlantıdan karşılıklı mesaj göndermesini sağlayan WebSocket bağlantısına geçildiğinde ayrıca bir 2xx HTTP yanıtı beklenmez.
2xx: Başarılı Yanıtlar
2xx sınıfı, istemciden gelen isteğin başarıyla alındığını, anlaşıldığını ve kabul edildiğini gösterir. Bununla birlikte başarı yanıtının biçimi isteğin yöntemine ve kullanılan özel koda göre değişebilir.
200 OK, isteğin başarılı olduğunu bildirir. 201 Created, isteğin bir veya daha fazla yeni kaynak oluşturmasıyla sonuçlandığını; 204 No Content ise isteğin başarıyla tamamlandığını ancak yanıtta ek içerik gönderilmediğini belirtir. Bu nedenle 2xx görülmesi her zaman ekranda bir içerik gövdesi bulunacağı anlamına gelmez.
202 Accepted ise isteğin işlenmek üzere kabul edildiğini, fakat işlemin henüz tamamlanmadığını bildirir. Örneğin bir rapor hazırlama isteği kabul edilmiş olabilir; 202 yanıtı raporun hazır olduğunu veya daha sonra mutlaka başarıyla hazırlanacağını garanti etmez.
3xx: Yönlendirme ve Ek İşlem Yanıtları
3xx sınıfı, isteğin tamamlanması için istemcinin ek işlem yapması gerektiğini gösterir. Bu sınıf çoğunlukla URL yönlendirmeleriyle bilinse de kapsamı yalnız başka bir adrese gitmekten ibaret değildir.
301 Moved Permanently hedef kaynağın kalıcı olarak yeni bir URL'ye taşındığını, 302 Found ise geçici olarak farklı bir URL altında bulunduğunu belirtir.
Kaynağın içeriğini almak için kullanılan GET veya yalnız başlıklarını isteyen HEAD isteği, önbellekteki kopyanın güncelliğini sınayan koşullarla gönderilebilir. 304 Not Modified, bu koşullu istekte önbellekteki içeriğin yeniden kullanılabileceğini bildirir; başka bir URL'ye yönlendirmez ve içerik gövdesi taşımaz.
4xx: İstemci Hatası Yanıtları
4xx sınıfı, sunucunun isteği istemciyle ilişkili bir sorun nedeniyle karşılayamadığını veya karşılamayı reddettiğini belirtir. Buradaki “istemci hatası” ifadesi her zaman son kullanıcının yanlış işlem yaptığı anlamına gelmez; istek biçimi, kimlik doğrulama, yetki veya hedef kaynağın durumu 4xx yanıtına yol açabilir.
400 Bad Request, sunucunun istemci hatası olarak değerlendirdiği bir nedenle isteği işleyemediğini belirtir. 403 Forbidden, sunucunun isteği anladığı halde yerine getirmeyi reddettiğini; 404 Not Found ise istenen kaynağa ait güncel içerik bulunamadığını veya sunucunun böyle bir kaynağın varlığını açıklamak istemediğini ifade eder.
5xx: Sunucu Hatası Yanıtları
5xx sınıfı, sunucunun isteği yerine getirirken hata yaşadığını veya gerekli işlemi yapamadığını gösterir. Sorun doğrudan kaynak sunucuda olabilir. İsteği sunucu adına karşılayıp arkadaki hizmete ileten reverse proxy veya başka bir ağ geçidi kullanılıyorsa sorun, bu aracı ile isteğin iletildiği sunucu arasındaki iletişimden de kaynaklanabilir.
500 Internal Server Error beklenmeyen genel bir sunucu hatasını ifade eder. 502 Bad Gateway, ağ geçidi ya da proxy rolündeki sunucunun isteği ilettiği sunucudan geçersiz yanıt aldığını; 503 Service Unavailable sunucunun geçici yoğunluk veya bakım nedeniyle isteği işleyemediğini; 504 Gateway Timeout ise ağ geçidinin isteği ilettiği sunucudan zamanında yanıt alamadığını belirtir.
HTTP Durum Kodları Nasıl Yorumlanır?
Bir HTTP yanıtını yorumlarken önce sınıfı, sonra tam kodu ve ardından isteğin bağlamını değerlendirmek gerekir. İstek yöntemi, hedef kaynak, yanıt başlıkları ve arada proxy veya ağ geçidi bulunup bulunmadığı aynı kodun neden döndüğünü anlamaya yardımcı olur.
4xx yanıtında istek biçimi, kimlik doğrulama ve yetki durumu, kullanılan yöntem ve hedef kaynağın varlığı incelenir. 5xx yanıtında ise uygulama ve sunucu günlükleriyle birlikte proxy, ağ geçidi ve bunların isteği ilettiği sunucular arasındaki bağlantılar kontrol edilir.
İstemci geçerli bir durum kodunun özel anlamını bilmese de ilk rakam önemini korur. HTTP standardına göre istemci, tanımadığı kodu kendi sınıfındaki x00 koduna eşdeğer biçimde ele almalıdır; bu sayede kodun ayrıntılı anlamı bilinmese bile yanıtın genel türü anlaşılır.







