HTTP Durum ve Hata Kodları

HTTP 1990 yılından beri dünya çapında ağ üzerinde kullanılan bir iletişim protokolüdür. HTTP‘nin açılımı “Hyper Text Transfer Protocol” yani “Hiper Metin Transfer Protokolü“dür. HTTP protokolü ağ üzerinden web sayfalarının görüntülenmesini sağlayan protokoldür. HTTP protokolü istemci (PC) ile sunucu (server) arasındaki alışveriş kurallarını belirler. 

HTTP Durum Kodları

HTTP durum kodları ise bir cevabın başarılı mı yoksa başarısız mı olduğunu anlamamıza yardımcı olan kodlardır. Çoğu zaman, kullanıcılar tarayıcıda döndürülen kodları görmezler, ancak tarayıcı sunucuyla her etkileşim kurduğunda bu kodlar istemciye döner.

HTTP durum kodları hata mesajının ve başarı mesajının görüntülenmesi açısından, bir uygulamayı kullanan izleyiciler için daha iyi bir kullanıcı deneyimi sağlamaya yardımcı olabilir.

HTTP durum kodları 5 farklı grup içerisinde toplanabilir. Bu kodların toplam sayısı 80’e kadar çıkabilmektedir. Ancak bu yazımızda biz en popüler ve en çok kullanılan kodları sizlerle paylaşacağız. 

Bilgilendirici HTTP Durum Kodları (100-199)

HTTP 100 (Continue) 

Şimdiye kadar her şeyin yolunda gittiğinin ve isteğin henüz sunucu tarafından reddedilmediğinin bir göstergesidir.

HTTP 100 Continue hakkında daha detaylı bilgi almak için tıklayınız

RFC dökümanını incelemek için tıklayınız.

HTTP 101 (Switching Protocol)

Bu aşamada, sunucunun bir istemci tarafından talep edildiği gibi protokolü değiştirdiğini belirtir. Sunucu daha sonra protokolün değiştirildiğini belirtmek için yanıt başlığında bir yükseltme yapar.

HTTP 101 Switching Protocol hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 102 Processing (WebDAV)

Bu HTTP durum kodu , sunucunun isteği aldığını ve işlediğini, ancak henüz bir yanıt olmadığını gösterir. 

HTTP 102 Processing (WebDAV) hakkında daha detaylı bilgi almak için tıklayınız.

HTTP 103 (Early Hints)

Bu HTTP durum kodu, esas olarak, sunucu bir HTTP mesajı göndermeden önce bazı yanıt başlıklarını döndürmek için kullanılır. 

HTTP 103 (Early Hints) hakkında daha detaylı bilgi almak için tıklayınız

Başarılı HTTP Durum Kodları (200-299)

HTTP 200 (OK)

HTTP 200 durum kodu, yanıtın başarılı olduğunu gösterir. Yani, istemci ile sunucu arasındaki iletişim herhangi bir hata olmadan sorunsuz bir şekilde yürütülmüştür.

HTTP 200 (OK) hakkında daha detaylı bilgi almak için tıklayınız

RFC dökümanını incelemek için tıklayınız.

HTTP 201 (Created)

Bu, talebin sadece başarılı olmadığını, aynı zamanda bir kaynağın da yaratıldığını gösterir. Bu durum kodu, sunucuya gönderilen kaynağı tanımladığı için genellikle bir POST isteğiyle birlikte gelir.

HTTP 201 (Created) hakkında daha detaylı bilgi almak için tıklayınız

RFC dökümanını incelemek için tıklayınız.

HTTP 202 (Accepted)

Bu, bir istemcinin sunucuda bir şey yaratma talebinde bulunduğu, ardından yapılan talebin kabul edildiği, ancak hala bir miktar işlemden geçtiği için henüz tamamlanmadığı anlamına gelir.

İşleme sırasında izin verilmeyebileceği için talepte bulunulabilir veya uygulanmayabilir.

HTTP 202 (Accepted) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 203 (Non-Authoritative Information)

Bu, başarılı bir isteği gösterir, ancak varlık başlığı, kaynak sunucununkinden değiştirilmiştir. Vekilin bir değişiklik uygulandığında konut sakinlerine bir uyarı göndermesine izin verir.

HTTP 203 (Non-Authoritative Information) kodu hakkında daha detaylı bilgi almak için tıklayınız

RFC dökümanını incelemek için tıklayınız.

HTTP 204 (No Content) 

Bu, gönderilen isteğin alındığı, ancak yanıt yükünde gönderilecek ek veri olmadığı anlamına gelir. PUT yöntemi çoğunlukla 204 yanıtı için kullanılır ve varsayılan olarak önbelleğe alınabilir.

HTTP 204 (No Content) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 205 (Reset Content) 

Burada istek başarılı bir şekilde işlenir, ancak yanıt kullanıcıya belge görünümünü sıfırlamasını söyler, böylece istek sunucudan alındığı orijinal durumuna geri döner.

HTTP 205 (Reset Content) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

Yönlendirme HTTP Durum Kodları (300-399)

HTTP 300 (Multiple Choice)

Bu HTTP kodu, bir kullanıcının seçebileceği çok sayıda seçeneği veya kaynağı gösterir ve her bir seçenek veya kaynak benzersiz bir şekilde tanımlanabilir.

Belirli bir yanıtı seçmenin genel olarak kabul edilmiş bir yolu olmadığından, bu yanıt kodu nadiren kullanılır.

HTTP 300 (Multiple Choice) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 301 (Moved Permanently)

Burada, kaynağa yapılacak tüm gelecekteki istekler belirli bir URL’ye yönlendirilmelidir. Artık var olmayan bir sayfadan yönlendirme yapmak için kullanılabilir.

Ancak bu isteğin yalnızca GET veya HEAD yöntemleri için kullanılması önerilir, çünkü bazı hatalar içerir ve tüm kullanıcı aracıları onunla uyumlu değildir. Bu tür bir yanıt varsayılan olarak önbelleğe alınabilir.

HTTP 301 (Moved Permanently) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 302 (Found) Previously[Moved Temporarily]

Bu yanıt, 301 HTTP durum koduna benzer. Buradaki fark, istenen kaynağın geçici olarak belirli bir başlığa taşınmış olmasıdır.

Ancak 302, 303 ve 307 ile değiştirilmiştir. Tıpkı 301 HTTP yanıt kodunda olduğu gibi, bu isteğin yalnızca GET veya HEAD yöntemleri için kullanılması önerilir, çünkü tüm kullanıcı aracıları onunla aynı hizaya gelmez.

HTTP 302 (Found) Previously[Moved Temporarily] kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 303 (See Other)

Bu HTTP durum kodu, bu isteğin yanıtının başka bir URL’e yönlendirildiğini gösterir. Bu durum kodu, herhangi bir HTTP yöntemi için geçerlidir.

HTTP 303 (See Other) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 304 (Not Modified)

Burada, kullanıcı aracısı son kaynağın önbelleğe alınmış bir kopyasına sahip olduğundan, istenen kaynağı yeniden göndermeye gerek yoktur. Amaç, kullanıcı aracısının en son güncellemenin bir kopyasına zaten sahip olması nedeniyle veri aktarımını en aza indirmektir.

HTTP 304 (Not Modified) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 307 (Temporary Redirect)

Bu durumda, yanıt kodu, istenen kaynağın geçici olarak başka bir URL’e taşındığını gösterir. İstemcinin bir istekte bulunmak için orijinal URL’i kullanmaya devam etmesi beklenir.

Burada, 302 HTTP durum kodunun aksine, istek yönteminin yeniden yönlendirme sırasında değiştirilmemesi garanti edilir.

HTTP 307 (Temporary Redirect) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 308 (Permanent Redirect)

Bu durumda, istenen kaynağa, isteklerin sorunsuz çalışmasına izin veren yeni bir kalıcı URL atanmıştır. Değiştirilebilen 301 HTTP durum kodunun aksine, yeniden yönlendirme sırasında istek yöntemi değişmez.

HTTP 308 (Permanent Redirect) kodu hakkında daha detaylı bilgi almak için tıklayınız.

İstemci Hata HTTP Durum Kodları (400-499)

HTTP 400 (Bad Request)

Bu, alınan isteğin yanlış söz diziminden kaynaklanabilecek bir hata nedeniyle sunucu tarafından işlenemediğini gösterir. Sunucu, bir sonraki talep alındığında bazı değişikliklerin yapılmasını bekler, aksi takdirde aynı hata devam eder.

HTTP 400 (Bad Request) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 401 (Unauthorized)

Bu durumda, alınan bir yanıta erişim sağlamak için yetkilendirme gerekir. Bu HTTP durum kodu HTTP 403’e benzer. Ancak burada, talebin kabul edilebilmesi için geçerli kimlik bilgilerine sahip olması beklenir.

HTTP 401 (Unauthorized) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 403 (Forbidden)

Bu HTTP durum kodu, kullanıcı-istemcinin geçerli bir veriye sahip olduğu ancak sunucu tarafından erişimin reddedildiği anlamına gelir. Kullanıcının söz konusu kaynak üzerinde herhangi bir hakka sahip olmasına izin verilmediğinden, tekrarlanan girişimlerde bulunmak kullanıcı olarak başarılı bir yanıt vermeyecektir.

HTTP 403 (Forbidden) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 404 (Not Found)

Bu HTTP kodu, istenen kaynağın sunucu tarafından bulunamayacağı anlamına gelir. Bu, geçici bir aksaklıktan kaynaklanıyor olabilir ve gelecekte başka bir istekte bulunulursa kaynak kullanılabilir olabilir. Çoğunlukla, 404’e götüren bağlantılara genellikle bozuk bağlantılar denir.

HTTP 404 Not Found hakkında daha detaylı bilgi için HTTP 404 Not Found Nedir? Nasıl Çözülür? isimli yazımızı inceleyebilirsiniz.

RFC dökümanını incelemek için tıklayınız.

HTTP 405 (Method Not Allowed)

Bu HTTP kodu, istenen bir yöntemin, sunucu tarafından tanındığında bile istenen kaynak için desteklenmediği anlamına gelir. Kaynak bir GET veya POST yöntemi bekliyor olabilir, ancak bir DELETE veya PUT yöntemi alırsa, yapılan istek 405 olarak reddedilecektir.

HTTP 405 (Method Not Allowed) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 410 (Gone)

Adından da anlaşılacağı gibi, bu HTTP durum kodu, istenen kaynağın artık mevcut olmadığını gösterir. 404 durum kodunun aksine, bu yanıtın sonuçları kalıcıdır. Bu yanıt varsayılan olarak önbelleğe alınabilir.

HTTP 410 (Gone) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 418 — (I’m a Teapot)

Bu HTTP kodu muhtemelen herkesin en sevdiği yanıt kodudur. 1998’de tanımlanmıştır ve herhangi bir HTTP sunucusu tarafından tanımlanması beklenmemektedir. Sunucunun kalıcı olarak bir çaydanlık olduğu için kahve demlemeyi reddettiği anlamına gelir.

HTTP 418 — (I’m a Teapot) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 429 (Too Many Requests)

Burada kullanıcı-müşteri belirli bir zaman dilimi içinde çok fazla talepte bulunmuştur. Bununla birlikte, istek başlığının, bir istemcinin isteği yeniden denemeden önce ne kadar beklemesi gerektiğine dair bir yanıtı göstermesi mümkündür.

Esas olarak, güvenlik amaçlı olan hız sınırlama stratejileri için kullanılır.

HTTP 429 (Too Many Requests) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

Sunucu Hata HTTP Durum Kodları (500-599)

HTTP 500 (Internal Server Error)

Burada, belirli bir isteğin, isteği tamamlayamamasına neden olan beklenmedik bir durumla karşılaştığı anlamına gelir. Kullanıcının bu HTTP durum kodunu web sayfasında görmesi beklenmez.

HTTP 500 (Internal Server Error) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 501 (Not Implemented)

Bu HTTP durum kodu, sunucunun belirli bir isteği tamamlamak için gereken gereksinimleri desteklemediğini veya sahip olmadığını gösterir. Bu, kullanıcı-istemcinin erişmeye çalıştığı sunucunun düzeltilmesi gerektiği anlamına gelir.

HTTP 501 (Not Implemented) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 502 (Bad Gateway)

Bu HTTP kodu, sunucunun proxy olarak hareket ederken istekte bulunurken sunucudan geçersiz bir yanıt aldığını gösterir.

HTTP 502 (Bad Gateway) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 503 (Service Unavailable)

Bu HTTP durum kodu, geçici bir durumu gösterir. Bu, sunucuya yapılan isteğin şu anda eylemi gerçekleştiremediği anlamına gelir; bu, bakım nedeniyle veya sunucunun aşırı yüklenmiş olduğu anlamına gelebilir.

HTTP 503 (Service Unavailable) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

HTTP 504 (Gateway Timeout)

Bu HTTP durum kodu, sunucunun bir proxy gibi davrandığını, isteği beklenen zaman aralığında göndermediğini gösterir. Bu düzeltmenin sunucudan gelmesi bekleniyor.

HTTP 504 (Gateway Timeout) kodu hakkında daha detaylı bilgi almak için tıklayınız.

RFC dökümanını incelemek için tıklayınız.

Terkedilmiş HTTP Durum Kodları

HTTP 305 (Use Proxy)

Bu HTTP yanıt kodu, yine de çalışacak olsa da, güvenlik nedeniyle artık kullanılmamalıdır.

HTTP 306 (Unused)

Bu HTTP durumu artık kullanılmamaktadır, HTTP / 1.1 belirtiminin önceki sürümünde kullanılmıştır.

Sonuç Olarak

HTTP durum kodları, bir uygulamanın hem geliştiricileri hem de kullanıcıları için hayati bir rol oynar. Bir web sayfasındaki şeylerin mevcut durumu hakkında net bir anlayış ve yön verir. Ayrıca, arama motoru optimizasyonu ve dijital pazarlamaya yardımcı olur.

HTTP durum kodlarının tüm listesine aşağıdaki adresten erişebilirsiniz.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

Tüm HTTP durum kodlarını aşağıdaki RFC dökümanında bulabilirsiniz.
https://tools.ietf.org/html/rfc7231#page-49