HTTP Durum Kodları Nedir?
İçindekiler
İnternet, her adımımızda aktif olarak bize eşlik ediyor. Durum böyle olunca internete dair öğrenmemiz gereken bilgiler de artıyor. HTTP durum ve hata kodları da bilmemiz gerekenler arasında yer alıyor. HTTP durum kodları, web sitelerinin ziyaretçileriyle kurduğu iletişim açısından önemli rol oynar. Bir araştırma yapmak, bir ürün satın almak gibi herhangi bir eylemde belirli durum ve hata kodlarıyla karşılaşabiliriz. HTTP kodları, isteğin başarıyla tamamlanıp tamamlanmadığını gösterir ve 3 rakamdan oluşur. İlk rakam durum kodunun sınıfını belirtirken diğer iki rakam ayrıntısını belirtir. HTTP durum kodları temel olarak 5 sınıfta gruplandırılmıştır.
HTTP Durum Kodları
1xx- Bilgilendirici Yanıtlar
2xx- Başarılı Yanıtlar
3xx-Yönlendirme Mesajları
4xx- İstemci Hatası Yanıtları
5xx- Sunucu Hatası Yanıtları
Bir ziyaretçi olarak bazı hata kodlarıyla karşılaşıyorsak, bu durum kullanıcı deneyimimizi olumsuz etkileyebilir ve o siteye karşı çeşitli yargılarda bulunabiliriz. Bir web sitesine sahipsek de ziyaretçilerimizin mağdur olmaması açısından bazı kodların düzenlenmesi ve giderilmesi için çeşitli SEO çalışmaları yapmamız gerekir. Bu içerikte HTTP durum kodlarının anlamları hakkında detaylı bir bilgilendirme yapmayı hedefliyorum.
HTTP Durum Kodları Neden Önemlidir?
Web sitesini ziyaret ettiğinizde tarayıcı ve sunucu olmak üzere iki taraf arasında bir iletişim kurulur. Bir sayfayı ziyaret etmek istiyorsak bunun bilgisi tarayıcı tarafından ilgili sayfanın sunucusuna iletilerek istek gönderilir. Bu isteğe karşılık olarak sunucudan 3 haneli bir durum kodu alırız. Bu kodlara http durum kodu denir. Bu kodlar sayfanın başarılı bir şekilde açıldığını gösterebileceği gibi, sunucu hatası gibi çeşitli engellerden dolayı açılmadığını da gösterebilir. Arama motoru botları, web sitelerini dizine eklerken bu durum kodlarını dikkate alır. Sayfanızın sürekli hata kodu vermesi arama motoru botları açısından güvenirliğinizi olumsuz etkileyebilir ve sıralamanız düşebilir.
HTTP Durum Kodlarının Sınıflandırması
1xx- Bilgilendirici Yanıtlar: (100-199)
Bu kodlar, sunucunun isteği aldığını ve işlemeye devam ettiğini bildiren durumları ifade eder.
100:
Bu durum kodu, istemcinin isteğe devam etmesi veya istek bitmişse yanıtı göz ardı etmesi gerektiğini belirtir. Bu durumda, sunucu işlemi bir süre devam edebilir.
101:
Tarayıcının sunucudan bir protokol değişikliği istediğini ve bu isteğin sunucu tarafından kabul edildiğini ifade eder.
102:
Sunucu isteği alır ve işler ancak henüz yanıt alınmamıştır. Bazen uzun süren işlemlerde gerçekleşebilir ve istemci tekrar istek gönderebilir. Sürecin devam ettiğini belirtir.
103:
Sunucu, yanıt henüz tamamlanmamış olmasına rağmen bazı ön bilgileri gönderir ve istemci, bu bilgileri gelecekteki işlemlerin optimizasyonu için kullanabilir. Sunucu, önemli başlıkları önceden göndererek istemciye bilgi sağlamış olur. Kısaca, sunucu bir HTTP mesajı göndermeden önce bazı yanıt başlıklarını döndürür.
2xx- Başarılı Yanıtlar (200-299)
Bu sınıf, isteğin başarıyla gerçekleştiğini ve sunucunun istenilen kaynağı başarıyla döndürdüğünü gösterir.
200 (OK):
Tarayıcı ile sunucu arasında her şey yolunda gitmiştir. İsteğin başarıyla işlendiğini ve yanıt içeriğinin istemciye gönderildiğini belirtir.
201 (Created):
Sunucu isteğin başarılı bir şekilde yerine getirilmesine ek olarak yeni bir kaynağın oluşturulduğunu belirtir.
202 (Accepted):
Sunucu, tarayıcının isteğini kabul ederek işleme koyar. İşlem olumlu veya olumsuz sonuçlanacaktır. Sonuç henüz bilinmeyebilir.
203 (Non-Authoritative Information):
200 Durum koduyla başarılı bir istek gerçekleşse de yanıt istemci tarafından değiştirildiğini ifade eder.
204 (No Content):
Sunucu isteği işler ancak içerik eksikliğinden dolayı istemciye herhangi bir yanıt verilmez.
205 (Reset Content):
204 Durum koduna benzer olarak istek başarıyla işlenir ancak herhangi bir içerik döndürülmez. Tarayıcının kullanıcının gördüğü içeriği yenilemesi gerekir. Bu durumda belge görünümünün sıfırlanması önerilir ve istek sunucudan alındığı orijinal durumuna döner.
206 (Partial Content):
Bu durum kodu kısmi içerik anlamına gelir. Sunucu, istemcinin sadece belirli bir kısmını istediği içeriği gönderir. Tarayıcının durdurulmuş olan indirmelere devam ederek indirmeleri birden fazla akışa ayırmasını sağlar.
207 (Multi Status):
Çoklu statü, birden fazla durum kodunun uygun olabileceği durumlar için birden fazla kaynak hakkında bilgi üretir.
3xx- Yönlendirme: (300-399)
Bu sınıf, ulaşılmak istenen bilginin başka bir kaynağa taşındığını ifade eder.
300 (Multiple Choices):
Tarayıcı, sunucunun sahip olduğu birden fazla kaynak arasında seçim yapmalıdır. Yani isteğin birden fazla yanıtı vardır. Sunucu farklı kaynakları sunar ve tarayıcı hangi kaynağı kullanmak istediğini seçer.
301 (Moved Permanently):
İstenen kaynağın URL’inin kalıcı olarak değiştirildiğini ifade eder. İstemci, gelecekteki istekleri yeni konuma yönlendirmelidir.
302 (Found):
301’de olan durum, bu kodda geçicidir. Bir kaynağın geçici olarak farklı bir kaynağa taşındığını ifade eder. URL geçici olarak değişmiştir. İstemci, geçici olarak yeni konuma yönlendirilir ancak gelecekteki isteklerde orijinal konumu kullanabilir.
303 (See Other):
Bu durum kodu, tarayıcının Post, Put veya Delete ile talep ettiği kaynağın başka bir URL’de bulunduğu anlamına gelir. Tarayıcı, kaynağı almak için farklı bir URL’ye GET isteği yapmalıdır.
304 (Not Modified):
Tarayıcıya, önbellekte depolanan bir kaynağın değişmediğini bildirir. Tarayıcı, önbellekteki sürümü kullanarak kaynağı yeniden indirmek yerine yerel önbellekteki veriyi kullanır. Bu sayede bant genişliğinden tasarruf sağlar. Amaç, veri aktarımını en aza indirmektir.
305 (Use Proxy):
Sunucu tarafından döndürülen proxy adresinin kullanılması gerektiğini belirten durum kodudur. (Bu HTTP yanıt kodu, yine de çalışacak olsa da, güvenlik nedeniyle artık kullanılmamalıdır.)
307 (Temporary Redirect):
İstenen kaynak geçici olarak başka bir URL’e taşınmıştır. 302 kodunun aksine, tarayıcının yönetiminin değişmesine izin vermez. Tarayıcı, isteği tekrar aynı yere yönlendirir.
308 (Permanent Redirect):
Kaynak kalıcı olarak farklı bir yere taşınır. 301 durum kodundan farklı olarak, tarayıcının yönetiminin değişmesine izin vermez. Tarayıcı, gelecekteki istekleri doğrudan yeni konuma yönlendirir.
4xx İstemci Hatası: (400-499)
İstek yanlış veya geçersiz olduğundan dolayı sunucu isteği yerine getiremez.
400 (Bad Request):
Sunucunun isteği anlayamadığı, hatalı bulduğu ve işleyemediğini ifade eder. Kullanıcı tarafından yapılan hatalı bir istek buna sebep olmuş olabilir.
401 (Unauthorized):
401 kodunda alınan yanıta erişim için yetkilendirme gerekir. 403’ten farklı olarak talebin kabul edilmesi için geçerli kimlik bilgilerine sahip olunmalıdır.
402 (Payment Required):
402 kodu, kullanıcının kaynağa erişmek için ödeme yapması gerektiğini ifade eder ve çevrimiçi ödeme gerektiren içeriklerde karşılaşılır.
403 (Forbidden):
403 hatası, kaynağa erişimin yasak olduğu anlamına gelir. İstemcinin güvenlik ya da erişim izni nedeniyle sunucu tarafından reddedilmesi anlamına gelir.
404 (Not Found):
404 kodu, sunucunun, istemcinin talep ettiği kaynağı bulamadığını ifade eder.
405 (Method Not Allowed):
405 hata kodunda, istek yöntemi sunucu tarafından biliniyor ancak kaynak tarafından desteklenmiyordur. Yani, Gönderilen sorgu türünü HTTP’nin kabul etmediğini belirtir. Bu bağlamda sorgu türünüzü GET veya POST olarak değiştirip tekrar denemenizde fayda var.
406 (Not Acceptable):
Sunucu, istemcinin kabul edilemez bir yanıt türü istediğini belirtiyor.
407 (Proxy Authentication Required):
401’e benzer ancak kimlik doğrulaması ve yetkilendirmenin Proxy tarafından yapılması gerekir.
408 (Request Timeout):
Bu durum kodu, sunucunun isteği beklerken zaman aşımına uğradığı durumlarda ortaya çıkar. Sunucu yoğunluğu veya ağ bağlantısı sorunları gibi nedenlerle ortaya çıkabilir.
409 (Conflict):
İstek, sunucunun mevcut durumuyla çakıştığında gönderilir.
410 (Gone):
Kaynak kalıcı olarak sunucuda mevcut değildir.
411 (Length Required):
Sunucu tarafından içerik uzunluğunun eksik olduğu belirtiliyor. İstek, içerik uzunluğu belirtilmeden yapıldı.
412 (Precondition Failed):
İstekte bulunan taraf, belirtilen ön koşulları sağlamadığında bu kodla karşılaşılır. Sunucu, ön koşulların sağlanmadığını belirtir.
413 (Payload Too Large):
İstek boyutu, sunucunun işleyebileceğinden daha büyüktür.
414 (URI Too Long):
Sunucu, isteğin URI -Uniform Resource Identifier uzunluğunun maksimum sınırları aştığını belirtiyor.
415 (Unsupported Media Type):
İstenen verinin medya formatı sunucu tarafından desteklenmediğinden sunucu isteği reddediyor.
416 (Range Not Satisfiable):
Sunucu, istemcinin istediği içeriğin belirtilen aralığını karşılayamıyor.
417 (Expectation Failed):
Sunucu, beklenen istek başlıklarını karşılayamadı veya işleyemedi.
418 (I'm a Teapot):
Bir şaka durum kodu. Bu hata Hyper Text Coffee Pot Control protokolüne bir referans olarak 1998 yılında yapılmış bir 1 Nisan şakasıdır. Sunucu, çaydanlıkla kahve demleme girişimini reddediyor.
421 (Misdirected Request):
Sunucu, isteği yönlendirme hatası nedeniyle işleyemedi. Bu genellikle TLS/SSL el sıkışma sorunlarıyla ilişkilidir.
422 (Unprocessable Entity):
Sunucu, isteği anladı ancak işleyemedi çünkü istek doğru olsa da semantik olarak yanlış veya geçersizdi.
423 (Locked):
Kaynak kilitlendi ve bu nedenle istek gerçekleştirilemiyor.
424 (Failed Dependency):
İstek, bir önceki isteğin başarısız olmasından dolayı gerçekleştirilemedi.
425 (Too Early):
Sunucu, isteği işleme riskini almaz çünkü henüz gerekli koşullar sağlanmamıştır.
426 (Upgrade Required):
Sunucu, mevcut protokolle isteği gerçekleştirmeyi reddeder. Sunucu, istemcinin daha yeni bir protokol sürümüne yükseltme yapması gerektiğini belirtir.
428 (Precondition Required):
425 durum kodunda ön koşulların sağlanmamasından doğan bir durum mevcuttu. Bu kodda sunucu, isteğin gerçekleştirilebilmesi için bir ön koşulun belirtilmesi gerektiğini ifade ediyor.
429 (Too Many Requests):
İstemci, belirli bir süre içinde çok fazla istek gönderdiği için sunucu isteği reddediyor.
431 (Request Header Fields Too Large):
Sunucu, isteğin başlıklarının boyutunun sunucu tarafından kabul edilebilir sınırları aştığını belirtiyor.
444 (Connection Closed Without Response):
Genellikle kötü amaçlı veya hatalı biçimlendirilmiş istekleri reddetmek için kullanılan standart olmayan bir durum kodudur. Nginx’e istemciye bir yanıt göndermeden bağlantıyı kapatmasını bildirir.
451 (Unavailable For Legal Reasons):
İçerik yasaklandı veya erişilemez hale getirildi, genellikle yasal nedenlerle.
5xx Sunucu Hatası Yanıtları (500-599)
500 (Internal Server Error):
Sunucuda beklenmeyen bir hata oluştu ve istek işlenemedi. Dolayısıyla işlem tamamlanamadı. Bu genellikle sunucu tarafındaki genel bir hata durumunu belirtir.
501 (Not Implemented):
İstek yöntemi sunucu tarafından desteklenmiyor ve işlenemiyor. Sunucu, gerekli işlevleri desteklemiyor, isteği yönetemiyor veya destekleyemiyor. Dolayısıyla istek yerine gelmiyor.
502 (Bad Gateway):
Sunucu, başka bir sunucuya istek gönderdikten sonra geçersiz bir yanıt alarak isteği işleyemez. Genellikle bir arka uç sunucusu veya ağ geçidi hata verdiğinde görülür.
503- Service Unavailable:
Sunucu geçici olarak hizmet veremiyor. Bu genellikle aşırı yükleme veya bakım nedeniyle olabilir.
504- Gateway Timeout:
Sunucu, diğer bir sunucudan yanıt alamadığı için isteği zamanında işleyemedi. Genellikle ağ geçidi veya arka uç sunucusu zaman aşımına uğradığında görülür.
505 (HTTP Version Not Supported):
Sunucu, istemcinin kullandığı HTTP sürümünü desteklemiyor veya kabul etmiyor.
Sonuç Olarak
HTTP durum kodları ziyaretçiler için de site sahipleri için de oldukça önemli bir rol oynar. Web sayfasında olup biten şeyleri anlamamıza olanak tanır. Hata sebebiyle gözüken kodların ortadan kaldırılması, arama motoru botlarının sitenize olan güvenini korur. SEO çalışmalarınızda yönlendirmelere ve sayfa hatalarına dikkat etmenizde fayda vardır. Ziyaretçiler 301 yönlendirilmesi eksik kaldığında ve yanlış sayfaya yönlendiğinde vakit kaybetmeden çıkmak isteyebilirler. Aynı zamanda 404 gibi hatalarla karşılaşmaları sitenize olan güvenlerini sarsabilir. Bu hatalarla birlikte sayfanızdan çıkmaları, sitenizde Hemen Çıkma Oranının yüksek olmasını sağlar ve SEO çalışmalarınız için bu ortadan kaldırmanız gereken bir konudur. HTTP durum kodlarının anlamlarını bilin ve hataları ortadan kaldırın. Böylece Web sitenizin sağlığına ve kullanıcı deneyiminize önem göstererek sitenizin kalitesini koruyun.