HTTP durum ve hata kodları internet siteleri hakkında bize bilgiler veren sunucu tarafından oluşturulan özel yanıtlardır. Bu kodlar değişik anlamlar ifade edebilir. Bu yazıda HTTP durum kodlarının çeşitleri ve anlamları hakkında bilgi vermeye çalışacağız.
HTTP Nedir?
HTTP (Hyper Text Transfer Protocol) olarak adlandırılan Türkçesi Hiper Metin Transfer Protokolü olan bir iletişim protokolüdür. Bu protokol sayesinde tarayıcılarımızın web sitelerine ait içeriklere ulaşması sağlanır. 1989 yılında Tim Berners-Lee tarafından geliştirilmiş ve World Wide Web Consortium (W3C) ile IETF (Internet Engineering Task Force) Internet Mühendisliği Görev Gücü tarafından kontrol ve yönetimi gerçekleştirilmektedir.
HTTP protokolü tarayıcılarımız (istemci) ile sunucu (server) arasında oluşturulan iletişim protokolüdür. İstemci HTTP üzerinden bir istem yapar ve ve sonucunda bir yanıt oluşturur.
HTTP Hata / Durum Kodu Nedir?
Tarayıcılarımızın yapmış olduğu her istek sunucu tarafından çeşitli şekillerde cevaplandırılır. Bazen web sitesinin içeriği ile ilgili oluşan problemler belirli HTTP Kod numaralarıyla hata mesajı olarak karşımıza çıkmaktadır. Bu hatalar veya durumlar HTTP belirtilen durum kod numaralarına göre farklı anlamlar kazanır. Aslında bu iletişim tarayıcı ve sunucu arasında gerçekleşir ancak hata kodlarını ziyaretçi olarak bizler de görebilmekteyiz.
Bu kodlar beş kategoride sınıflanır.
- Bilgilendirici HTTP Durum Kodları (100-1xx)
- Başarılı HTTP Durum Kodları (200-2xx)
- Yönlendirme HTTP Durum Kodları (300-3xx)
- İstemci Hata HTTP Durum Kodları (400-4xx)
- Sunucu Hata HTTP Durum Kodları (500-5xx)
Bu şekilde sınıflanan durum kodları hangi üç basamaklı sayı grubunda ise o konuda hata veya durum raporu sunuyor demektir.
Bilgilendirici HTTP Durum Kodları (100-1xx)
HTTP 100 (Continue)
HTTP 100 Devam protokolü istemci tarafından gelen isteğin başarılı bir şekilde alındığını ve işleme devam edildiği anlamına geliyor.
HTTP 101 (Switching Protocol)
Anahtarlama protokolü olarak da ifade edilen bu kod ile sunucu istemciden gelen protokol değiştirme isteğini gerçekleştireceğini ifade etmektedir.
HTTP 102 (Processing)
Bu HTTP kodu sunucunun isteği işleme aldığını ifae eder. İşlem devam etmekte ancak daha yanıt oluşmamıştır.
HTTP 103 (Early Hints)
Sunucu daha yanıt oluşturmadan önce istemcinin bazı kaynakların önceden yüklenmesine olanak tanıdığını gösteren durum kodudur.
Başarılı HTTP Durum Kodları (200-2xx)
HTTP 200 (Ok)
Adından da anlaşılacağı üzere isteğin alındığını ve isteğe bağlı cevabın döndürüleye başladığı anlamına gelen “OK” başarılı durum kodudur. Burada işlemin sonuçlanma biçimi tamamen isteğe bağlı olmaktadır ve bu da 4 farklı kategoride değerlendirilmektedir.
GET
Kaynağın alındığını ve mesaj gövdesine aktarıldığını ifade eder.
HEAD
Başlıkların daha herhangi mesaj gövdesi olmadan gönderildiğini ifade eder.
PUT veya POST
Kaynağın mesaj gövdesine aktarıldığını ifade eder.
TRACE
Mesaj gövdesi sunucu tarafından alınan istek mesajını içermektedir.
HTTP 201 (Created)
İsteğin başarılı olduğu ve kaynağın başarılı bir şekilde oluşturulduğu durum kodu HTTP 201 kodudur. GET veya PUT isteklerinden sonra oluşturulmuş cevaptır.
HTTP 202 (Accepted)
İstemci tarafından oluşturulan talebin başarıyla alındığını ve kabul edildiği ancak daha herhangi bir işlem yapılmadığını ifade eder. Sunucunun başka bir işlem veya toplu işlemler ile ilgilendiği durumlarda oluşturulan yanıttır.
HTTP 203 (Non-Authoritative İnformation)
Oluşturulan yanıt veya metabilginin sunucudaki kaynakla birebir aynı olmadığı durumlarda bu yanıt kodu döndürülür. Kaynağın ayna veya yedekler üzerinden aktarıldığı anlamına gelir. Ender rastlanan bir durumdur.
HTTP 204 (No Content)
Sunucunun isteği başarıyla aldığını ancak gösterime konulacak bir içeriğin olmadığını, buna rağmen sayfadan ayrılmanın gerekli olmadığı anlamına gelen bir durum kodudur.
HTTP 205 (Reset Content)
İçeriği sıfırla anlamına gelen bu durum kodu istemciye belge görünümünü sıfırlamasını söyler. Genelde bir formun içeriğini temizlemek, kullanıcı arayüzünü yenileme durumunda kullanılır.
HTTP 206 (Partial Content)
Kısmi içerik başarı durum kodu olan HTTP 206 ile isteğin başlıkta açıklandığı veri aralıklarına ait içerikleri sunduğu anlamına gelir. Content-Type içerik tipini ve Content Range içerik aralığını ifade eden terimlerdir.
Yönlendirme HTTP Durum Kodları (300-3xx)
HTTP 300 (Multiple Choice)
Bu durum kodları istemcinin talebine bağlı birden fazla olası yanıt olduğu durumlarda ortaya çıkar. İstemcinin bu seçeneklerden birini seçmesi istenir.
HTTP 301 (Moved Permanently)
İstenen kaynak farklı bir adrese kalıcı olarak taşındığında bu kod yanıtı verilir. Ayrıca yeni URL adresi de yanıt olarak verilir.
HTTP 302 (Moved Temporarily)
İstenen kaynağın farklı bir adrese geçici olarak taşındığı anlamına gelir. İstemci yeni URL adresine yönlendirilir.
HTTP 303 (See Other)
Sunucu istemci tarafından istenen içeriği GET işlemiyle başka bir URI üzerinden sunacağı zaman ortaya çıkan bir yönlendirme durum kodudur.
HTTP 304 (Not Modified)
İstemciye verilecek mesajın değiştirilmediğinin söylendiği bu durum koduyla istemcinin verilen yanıtı önbelleğe alması sağlanır. İstemci artık önbelleğe alınmış bu sürümü kullanmaya devam edebilir.
HTTP 307 (Temporarily Redirect)
Sunucu bu durum koduyla istemciyi başka adresteki kaynağı almaya tekrar yönlendirmektedir.
HTTP 308 (Permanent Redirect)
Bu kod numarası ile verilmek istenen mesaj kaynağın artık kalıcı olarak farklı bir adreste bulunduğu ve yeni lokasyonun bu yanıtla verildiği anlamına gelir.
İstemci Hata HTTP Durum Kodları (400-4xx)
HTTP 400 (Bad Request)
İstemci geçersiz söz dizimi veya yanlış bir adres girdiğinde ortaya çıkan hata kodudur.
HTTP 401 (Unauthorized)
Yetkisizlik ifadesi olarak tanımlansa da genel olarak kimlik doğrulaması yapılmadığı durumlarda ortaya çıkan hata kodudur. İstemcinin yetkisi olmadığı yerlere girmek istediğinde ortaya çıkar. Yani istemci istediği yanıtı alması için kendi kimliğini sunucuya tanıtmak zorundadır.
HTTP 402 (Payment Required)
İstemciye ödeme yapması gerektiği mesajı da veren bir koddur. Ancak çok fazla kullanılmamaktadır. Ücretli sistemlerde kullanılması planlanmış ancak standart bir sözleşmesi olmayan HTTP kodudur.
HTTP 403 (Forbidden)
İstemcinin (kullanıcının) içeriğe ulaşma yetkisinin olmadığı durumlarda forbidden yani yasaklı veya ulaşılamaz anlamına gelen bu hata kodu gösteriliyor.
HTTP 404 (Not Found)
Sunucu istem yaptığınız kaynağa ulaşamadığı zaman ortaya çıkan bu hata kodu en çok bilinen hata durum kodlarındandır. Sayfa bulunamadı hatası olarak karşımıza çıkar. Bazı durumlarda sunucular yetkisiz istemcilere yetkisizliğini belirtmek istemediği ve gizlediği durumlarda bu hata kodu ile cevap vermektedir.
HTTP 405 (Method Not Allowed)
Yöntem kabul edilmedi anlamında çevrilebilecek hata kodudur. İstek yöntemi sunucu tarafından bilinse de devre dışı bırakıldığı ve kaynak tarafından desteklenmediği anlamına gelir.
HTTP 406 (Not Acceptable)
Pratikte çok nadiren kullanılan bir hata kodudur. Sunucu tarafından isteğin kabul edilemez olduğu anlamındadır. Sunucu tarafından içerik uzlaşması başlıklarında kabul edilebilir ve eşleşen bir yanıt üretemediği anlamına gelir. Sunucuyu böyle bir hata durumu oluşturursa mesaj gövdesinde kaynaklara ait mevcut seçeneklerin listesini sunması ve kullanıcının bunlar arasından bir seçim oluşturmasına olanak tanıması gerekmektedir.
HTTP 407 (Proxy Authentication Required)
Temel olarak 400 bir hata kodu na benzeyen yetkisizlik ifadesidir ancak burada kimlik doğrulamasının Proxy tarafından yapılması gerekmektedir.
HTTP 408 (Request Timeout)
İstemci tarafından oluşturulan isteklerin belirli bir sürede cevaplanması gerekir bu süreyi aşan durumlarda yanıt oluşturulamazsa “İstek zaman aşımına uğradı” anlamına gelen bu durum kodu cevap olarak verilmektedir.
HTTP 409 (Conflict)
İstemci tarafından oluşturulan istek ile sunucunun durumu arasında çelişki oluştuğunda verilen yanıttır.
HTTP 410 (Gone)
İçeriğin tamamen silindiği ortadan kaldırıldığı durumlarda paylaşılan hata kodudur. İstemciden bu talebe konu olan kaynak hakkında ön belleklerin ve bağlantıların kaldırması beklenir. Arama motoru botlarının yanıtlanması daha başarılı sonuçlar ortaya çıkaracaktır.
HTTP 411 (Length Required)
Sunucunun Content-Length üst bilgi tanımlanmadığı zaman bu isteği reddettiği zaman bu hata mesajı kullanılmaktadır.
HTTP 412 (Precondition Failed)
İstemci, sunucunun karşılamadığı bazı ön koşulları talep ettiğinde ortaya çıkan hata durum kodudur.
HTTP 413 (Payload Too Large)
İstek varlığı sunucunun tanımladığı sınırların çok daha büyük olduğu durumlarda bağlantı sunucu tarafından kapatabilir.
HTTP 414 (URI Too Long)
İstemcinin talep ettiği URI, (Uniform Resource Identifier) sunucu tarafından yorumlanabileceğinden çok daha uzun olduğu durumlarda bu hata mesajı kullanılır.
HTTP 415 (Unsupported Media Type)
Sunucu tarafından desteklenmeyen medya biçimi oluştuğu durumlarda sunucu isteği reddeder. Böyle durumlarda bu hata koduyla istemciye yanıt verilmektedir.
HTTP 416 (Range Not Satisfiable)
Bir sunucu istemci tarafından istenen aralıkta hizmet veremediği anlamına gelir. Bu mesajla karşılaşıldığında genelde tarayıcılar tarafından işlem durdurulur, indirme işlemi var ise işlem tamamen durdurularak işlemin yeniden başlanması sağlanır.
HTTP 417 (Expectation Failed)
Bu mesaj, istemci tarafından oluşturulan isteğin sunucu tarafından karşılanamayacağı durumlarda ortaya çıkar. Beklenti hatası olarak Türkçeleştirilebilir.
HTTP 421 (Misdirected Request)
İstek yetkisiz bir sunucuya ulaştığında ortaya çıkan hata durum kodudur. İsteğin ulaştığı sunucu çözüm üretme kabiliyet ve yetkisine sahip olmadığında karşılaşılır.
HTTP 425 (Too Early)
Sunucunun istemcinin ortaya koyduğu istemi yeniden işleme koymak istemediği zaman ortaya çıkan hata durum kodudur.
HTTP 426 (Upgrade Required)
Sunucunun mevcut protokol üzerinden oluşturulan istekleri gerçekleştirmek istemediğini ve farklı bir protokole yükseltmesini istediği anlamına gelir. Gerekli yükseltme (Upgrade) gerçekleştikten sonra istek gerçekleştirilecektir.
HTTP 428 (Precondition Required)
İstemci tarafından oluşturulan isteğin belirli koşulları sağlamsı gerektiği durumlarda bu hata mesajı ortaya çıkmaktadır. Örnek olarak “if-match” koşulunun sağlamadığı durumlar bu hata mesajıyla sonuçlanır.
HTTP 429 (Too Many Request)
Kullanıcı, belli bir süre kapsamında istemci üzerinden çok fazla istek gönderdiği zaman ortaya çıkan hata durum kodudur.
HTTP 431 (Request Header Fields Too Large)
İstek başlığının çok büyük olduğunu ifade eden bu mesajda istemci istek başlığı boyutunun istenen ölçülere getirir ise isteği işleme sokabilir.
HTTP 451 (Unavailable For Legal Reasons)
İstemci yasal olarak engellenmiş bir içeriğe ulaşmak istediğinde verilen hata mesajıdır. Yasal nedenlerle yasaklanmış ve mevcut lokasyondaki istemcilerin kanunlara ters düşen bu içeriği alması bu şekilde önlenir.
Sunucu Hata HTTP Durum Kodları (500-5xx)
HTTP 500 (Internal Server Error)
HTTP 500 hatası, sunucunun başa çıkamayacağı bir durumla karşılaştığı anlamına gelen hata kodudur.
HTTP 502 (Bad Gateway)
Bu hata kodu sonucunun isteği işlemek ve gereken yanıtı oluşturulması için ağ geçidi olarak çalışırken geçersiz bir yanıt aldığı anlamına gelmektedir.
HTTP 503 (Service Unavailable)
Genelde bakım için kapalı olan sunucuların verdiği “Service Unavailable” mesajı sunucunun isteği işlemeye hazır olmadığı anlamına gelir. Bu durum kodu geçici koşullarda kullanılmalıdır. Genelde tavsiye edilen şey bu yanıtla birlikte sorunu açıklayan bir sayfanın gönderilmesi gerektiğidir. Bu geçici durum yanıtları ile gönderilen verilerin önbelleğe alınmaması gerekir.
HTTP 504 (Gateway Timeout)
Bu hata kodu sunucunun ağ geçidi olarak hareket ettiği durumda ve istenen sürede yanıt oluşmadığında ortaya çıkmaktadır.
HTTP 505 (HTTP Version Not Supported)
Bu hata mesajı İstemcinin kullandığı HTTP sürümünün (versiyonu) sunucu tarafından desteklenmediği anlamına gelmektedir.
HTTP 511 (Network Authentication Required)
Bu durum kodu istemcinin ağ erişimi oluşturabilmek için kimlik doğrulaması yapması gerektiğini ortaya koyar.