HTTP Durum Kodu (Status Code) Nedir?
HTTP durum kodları, web tarayıcıları ve sunucular arasındaki iletişimde önemli bir rol oynar. Durum kodları, bir HTTP isteği sonrasında alınan yanıtın durumunu belirler ve genellikle isteğin başarılı olup olmadığını veya herhangi bir hata olup olmadığını gösterir. Bu içeriğimde en sık karşılaşılan durum kodlarına ve ne anlama geldiklerine değineceğim.
HTTP Durum Kodu Sınıfları
HTTP durum kodları, genel olarak beş sınıfa ayrılabilir. Her sınıf, belirli bir kategoriye ait durum kodlarını içerir. HTTP durum kodu sınıflarını kısaca açıklamak gerekirse:
1xx (Informational): Bu sınıf, bilgi amaçlı durum kodlarını içerir. İstemciye veya sunucuya, işlemin durumu hakkında bilgi verirler. Örneğin, “100 Continue” durum kodu, sunucunun, isteği kabul ettiğini ve istemcinin devam edebileceğini belirtir.
2xx (Successful): Bu sınıf, isteğin başarıyla tamamlandığını gösteren durum kodlarını içerir. “200 OK” durum kodu, isteğin başarılı bir şekilde gerçekleştiğini ifade eder. “201 Created” durum kodu ise yeni bir kaynağın başarıyla oluşturulduğunu belirtir.
3xx (Redirection): Bu sınıf, istemcinin başka bir eylem yapması gerektiğini belirten durum kodlarını içerir. Örneğin, “301 Moved Permanently” durum kodu, bir kaynağın kalıcı olarak başka bir URL’ye taşındığını belirtir.
4xx (Client Error): Bu sınıf, istemci tarafından yapılan isteklerdeki hataları temsil eder. “400 Bad Request” durum kodu, isteğin yanlış veya anlaşılamayan bir formatta olduğunu belirtir. “404 Not Found” durum kodu ise istenen kaynağın bulunamadığını gösterir.
5xx (Server Error): Bu sınıf, sunucu tarafında oluşan hataları temsil eder. “500 Internal Server Error” durum kodu, genel bir sunucu hatası olduğunu belirtir. “503 Service Unavailable” durum kodu ise sunucunun şu anda hizmet verememesini ifade eder.
Her sınıf, belirli bir türde durumları temsil eder ve HTTP iletişimindeki durumları anlamak ve işlemek için kullanılır. Durum kodları, iletişim sırasında ortaya çıkan durumları belirlemek ve uygun şekilde yanıt vermek için önemlidir.
En Sık Karşılaşılan HTTP Durum Kodları
Web tarayıcıları ve sunucular arasındaki HTTP iletişiminde, belirli durum kodları daha sık karşılaşılır. En sık karşılaşılan durum kodları aşağıdaki gibidir.
200 Durum Kodu: (Başarılı)
200 HTTP durum kodu, isteğin başarıyla işlendiğini ve yanıtın içinde istenen kaynağın bulunduğunu belirtir. Bu durum kodu, genellikle bir GET isteği sonrasında kaynak başarıyla alındığında veya bir PUT veya POST isteği sonrasında işlem başarıyla tamamlandığında kullanılır.
Örnek Senaryo: Bir web sayfasının başarıyla yüklendiği durum.
301 Durum Kodu: (Kalıcı Yönlendirme)
301 Moved Permanently (Kalıcı Olarak Taşındı) HTTP durum kodu, bir kaynağın kalıcı olarak başka bir URL’ye taşındığını belirtir. Bu durum kodu, tarayıcılar ve diğer istemciler için, gelecekteki isteklerin yeni URL’ye yönlendirilmesi gerektiğini ifade eder. Bu taşıma kalıcıdır, yani kaynak artık eski URL’de bulunmaz ve artık kullanılmaz.
Örnek Senaryo: Bir web sitesinin taşındığı durum
302 Durum Kodu: (Geçici Yönlendirme)
302 Found durum kodu, bir kaynağın geçici olarak başka bir URL’ye taşındığını belirtir. Yani, istemci, bu durum kodunu aldığında, isteğini geçici bir süreliğine yeni bir konuma yönlendirmelidir, ancak gelecekteki isteklerini eski URL üzerinden yapmaya devam edebilir.
Örnek Senaryo: Bakım nedeniyle bir sayfanın geçici olarak başka bir adrese taşındığı durum.
307 Durum Kodu: (Geçici Yönlendirme)
307 durum kodu, bir kaynağın geçici olarak başka bir URL’ye taşındığını ve bu taşınmanın tarayıcılar ve diğer istemciler tarafından geçerli metodların korunması gerektiğini belirtir. Yani, bu durumda, gelecekteki isteklerin yeni URL’ye yönlendirilmesi gerekmektedir, ancak orijinal HTTP metodu korunmalıdır.
Bu durum kodunun kullanımı, “302 Found” durum kodu ile benzerdir ancak bir farkı vardır: “307 Temporary Redirect”, orijinal HTTP metodu korunmalıdır. Bu durum kodu, özellikle POST istekleri gibi metodların değiştirilmesi istenmeyen durumlarda kullanılabilir.
Özetle, “307 Temporary Redirect” durum kodu, geçici bir yönlendirme durumunu ifade eder ve orijinal metodun korunmasını talep eder.
308 Durum Kodu: (Kalıcı Yönlendirme)
308 durum kodu, bir kaynağın kalıcı olarak başka bir URL’ye taşındığını belirtir ve tarayıcıların ve diğer istemcilerin gelecekteki isteklerini bu yeni URL’ye yönlendirmelerini ister. “308 Permanent Redirect” durum kodu, “301 Moved Permanently” ile benzer bir şekilde kalıcı bir yönlendirme durumunu ifade eder. Ancak, bir farkla, “308 Permanent Redirect” durum kodu, 307 gibi orijinal HTTP metodu korunmalıdır.
400 Durum Kodu: (Bad Request)
400 durum kodu, bir HTTP isteğinin sunucu tarafından anlaşılamayan veya geçersiz bir formatta olduğunu belirtir. Yani, istemci tarafından gönderilen istek sunucu tarafından işlenemiyor, çünkü istek formatı hatalı, eksik veya geçersiz.
Örnek Senaryo:
- İstek başlıkları veya parametreleri hatalı veya eksik olduğunda.
- İstemci tarafından gönderilen veri, sunucunun beklediği formatta değilse.
- İstek, belirli bir başlık veya parametre olmadan yapıldığında.
404 Durum Kodu: (Bulunamadı)
404 durum kodu, istemcinin talep ettiği kaynağın sunucu üzerinde bulunamadığını belirtir. Bu durumda, sunucu talep edilen URL’de herhangi bir kaynak bulamaz ve isteği işleyemez.
Örnek Senaryo:
- Geçersiz bir URL’yi tarayarak veya bir bağlantıyı tıklayarak ulaşılmaya çalışılan bir sayfanın bulunamadığı durum.
- Bir web sitesinin yapısının değiştirilmesi sonucu, eski URL’lerin artık geçerli olmaması.
410 Durum Kodu: (Kalıcı Olarak Bulunanamadı)
410 durum kodu, istemcinin talep ettiği kaynağın artık sunucu üzerinde mevcut olmadığını ve kalıcı olarak kaldırıldığını belirtir. Bu durumda, sunucu talep edilen URL’de bir kaynak bulamaz ve bu kaynağın bir daha geri gelmeyeceğini ifade eder. Kullanıcılar, bu kaynağa artık erişim sağlayamazlar ve bu durum genellikle bir kaynağın bilinçli olarak kaldırıldığı veya taşındığı durumlarda kullanılır.
500 Durum Kodu: (Sunucu Hatası)
500 durum kodu, sunucu tarafında genel bir hata oluştuğunu ve isteğin tamamlanamadığını belirtir. Bu durum genellikle sunucu tarafındaki yazılım hataları, konfigürasyon sorunları veya beklenmeyen durumlar nedeniyle meydana gelir. Kullanıcılar, bu durumu alınca genellikle bir hata sayfasıyla karşılaşırlar ve bu durum, sistem yöneticileri tarafından çözülmesi gereken ciddi bir sorunu ifade eder.
503 Durum Kodu: (Sunucu Kullanılamıyor)
503 durum kodu, sunucunun şu anda hizmet verememesini belirtir. Genellikle bakım işlemleri, sunucu yoğunluğu veya geçici bir sorun nedeniyle ortaya çıkar. Bu durumda, sunucu gelecekteki isteklere hizmet verene kadar kullanıcılara hizmet veremeyeceğini bildirir. Kullanıcılar, bu durumu alınca genellikle bir hata sayfasıyla karşılaşırlar ve bir süre sonra tekrar denemeleri önerilir.
Tüm HTTP Durum Kodları
1xx Durum Kodları
100 Continue: İstek alındı ve sunucu, isteğin devam etmesini istiyor. İstemci, şimdi gövdeyi gönderebilir.
101 Switching Protocols: Sunucu, istemcinin talep ettiği protokolü değiştirdi ve istemcinin bu yeni protokolü kullanmasını istiyor.
102 Processing: Sunucu, isteği alıp işlemeye başladı ancak henüz tamamlanmadı. Bu durum, uzun süren işlemleri yönetmek için kullanılabilir.
2xx Durum Kodları
200 OK: İstek başarıyla işlendi ve sunucu istemciye istenen kaynağı başarıyla iletti.
201 Created: İstek, yeni bir kaynak oluşturdu ve sunucu bu kaynağı başarıyla oluşturdu.
202 Accepted: İstek kabul edildi, ancak işleme konulduğu yerde tamamlanmamış olabilir.
204 No Content: İstek başarılı oldu, ancak sunucu içerikle bir yanıt göndermedi.
205 Reset Content: İstekle ilgili kullanıcı arayüzü sıfırlanmalıdır (örneğin, bir formun temizlenmesi).
206 Partial Content: Sadece istenilen bir kısmı başarıyla iletilmiştir.
3xx Durum Kodları
300 Multiple Choices: İstemci, birçok seçenek arasından birini seçmeli, çünkü kaynak birden fazla konumda bulunabilir.
301 Moved Permanently: İstenen kaynak kalıcı olarak başka bir URL’ye taşındı ve gelecekteki istekler bu yeni URL’ye yönlendirilmelidir.
302 Found: İstenen kaynak geçici olarak başka bir URL ye taşındı, ancak gelecekteki istekler eski URL’ye yönlendirilmeye devam edebilir.
303 See Other: İstemci, başka bir URL’ye yönlendirilmeli, ancak gelecekteki istekler GET metodunu kullanmalıdır.
304 Not Modified: Kaynak, istemci tarafından önceden alınmış ve değişmemiştir.
307 Temporary Redirect: İstenen kaynak geçici olarak başka bir URL’ye taşındı ve tarayıcıların metodlarını değiştirmemesi gerekiyor.
308 Permanent Redirect: İstenen kaynak kalıcı olarak başka bir URL’ye taşındı ve tarayıcıların metodlarını değiştirmemesi gerekiyor.
4xx Durum Kodları
400 Bad Request: İstek, sunucu tarafından anlaşılamayan veya geçersiz bir formatta.
401 Unauthorized: İstek, kimlik doğrulama gerektiriyor ve kullanıcının yetkilendirme bilgileri geçerli değil.
402 Payment Required: Ödeme gerekiyor ancak sunucu bu özelliği desteklemiyor.
403 Forbidden: İstek, sunucu tarafından anlaşıldı ancak kullanıcının erişim izinleri yok.
404 Not Found: İstenen kaynak bulunamadı, genellikle yanlış URL veya geçersiz bir kaynak talebi sonucunda.
405 Method Not Allowed: İstekte belirtilen metod, kaynağın üzerinde desteklenmiyor.
406 Not Acceptable: İstekle ilişkilendirilen kaynak, istemcinin kabul edilebilir bir medya tipi olmadığında.
407 Proxy Authentication Required: Proxy kimlik doğrulaması gerekiyor.
408 Request Timeout: İstek, belirli bir süre içinde tamamlanamadı.
409 Conflict: İstek, kaynak üzerinde bir çatışma yarattı.
410 Gone: İstenen kaynak artık mevcut değil ve kalıcı olarak kaldırıldı.
411 Length Required: İstek, içeriğin boyutunu belirtmedi ve gereklidir.
412 Precondition Failed: Önkoşul belirtilen koşullarda başarısız oldu.
413 Payload Too Large: İstek, sunucu tarafından işlenmek üzere çok büyük bir gövde içeriyor.
414 URI Too Long: İstek URI çok uzun, sunucu tarafından işlenemiyor.
415 Unsupported Media Type: İstekte belirtilen medya tipi, sunucu tarafından desteklenmiyor.
416 Range Not Satisfiable: İstekte belirtilen aralık, kaynak tarafından karşılanamıyor.
417 Expectation Failed: “Expect” başlığı belirtilen beklenti karşılanamadı.
418 I’m a teapot: Bu, şaka amaçlı bir durum kodudur ve bir çaydanlık üzerinde “çay demleniyor” anlamına gelir.
421 Misdirected Request: İstek, sunucu üzerinde yönlendirme hatası nedeniyle işlenemedi.
422 Unprocessable Entity: İstek, sunucu tarafından işlenemedi çünkü doğrulama veya doğrulama başarısız oldu.
423 Locked: Kaynak kilitli olduğu için istek tamamlanamıyor.
424 Failed Dependency: İstek, başarısız bir bağımlılıktan dolayı işlenemedi.
426 Upgrade Required: İstek, güvenlik nedeniyle bir güncelleme gerektiriyor.
428 Precondition Required: Önkoşul belirtilmemiş olduğundan istek işlenemedi.
429 Too Many Requests: İstemcinin belirli bir süre içinde gönderdiği istek sayısı sınırların üzerinde.
431 Request Header Fields Too Large: İstek başlıkları çok büyük olduğu için işlenemedi.
451 Unavailable For Legal Reasons: İstek, yasal nedenlerle sunulamıyor.
5xx Durum Kodları
500 Internal Server Error: Sunucu genel bir hata ile karşılaştı ve isteği tamamlayamıyor.
501 Not Implemented: Sunucu, isteğin gerekli bir özelliği desteklemediğini belirtiyor.
502 Bad Gateway: Sunucu, bir başka sunucudan geçerli bir yanıt alamıyor (gateway veya proxy sorunu).
503 Service Unavailable: Sunucu, şu anda hizmet veremiyor, genellikle bakım veya geçici bir sorun nedeniyle.
504 Gateway Timeout: Sunucu, bir başka sunucudan beklenen yanıtı belirli bir süre içinde alamıyor (gateway veya proxy sorunu).
505 HTTP Version Not Supported: Sunucu, HTTP protokolünün belirtilen versiyonunu desteklemiyor.
506 Variant Also Negotiates: Sunucu, kaynak içeriği için sunucu tarafından konfigüre edilen bir varyantı istemci ile uyumlu bir şekilde anlaşamıyor.
507 Insufficient Storage: Sunucu, bir kaynağı depolamak için yeterli alanına sahip değil.
508 Loop Detected: Sunucu, bir döngüde olduğunu algıladı ve isteği işleyemiyor.
510 Not Extended: Sunucu, isteği karşılamak için gerekli olan ağ genişletmelerini desteklemiyor.
511 Network Authentication Required: İstemci, ağa erişim sağlamak için kimlik doğrulama yapmalıdır.
Web Sayfasının Durum Kodu Nasıl Görüntülenir?
Bir web sayfasının durum kodunu görüntülemenin farklı yolları vardır. Durum kodları doğrudan önyüzde kullanıcıya sunulabilir veya Chrome extension, devtools üzerinden doğrudan görüntülenebilir. Aşağıda Trendyol’un 404 sayfasına ait bir örnek verilmiştir.
Bu sayfanın 404 durum kodu çevirdiğini inspect > network sekmesi üzerinden de görüntüleyebilirsiniz.
Veya redirect path gibi Chrome eklentileri üzerinden sayfaların durum kodunu doğrudan görüntüleyebilirsiniz.

Sonuç olarak, HTTP durum kodları web tarayıcıları ile sunucular arasındaki iletişimi düzenleyen kritik bir mekanizmadır. Bu kodlar, bir isteğin durumunu belirleyerek tarayıcıya bilgi sağlar. Doğru kullanıldığında, HTTP durum kodları web uygulamalarının güvenilirliğini artırabilir ve sorunların hızla tespit edilmesine yardımcı olabilir. Web geliştiricileri, kullanıcı dostu bir deneyim sağlamak amacıyla uygun durum kodlarını kullanmalı ve hata mesajlarını açıklayıcı bir şekilde sunmalıdır. Bu standartlar, internet üzerindeki iletişimi daha etkili ve güvenilir kılmak için önemli bir rol oynar.
Bir yanıt yazın