Web geliştirme dünyasında, HTTP hata kodları bir web sitesinin kullanıcı deneyimini ve itibarını etkilemede hayati bir rol oynar. Bu makalede, sunucu hata kodlarının tam listesini ele alacağız, anlamlarını analiz edeceğiz ve sorunları çözmek ve web uygulamalarının performansını optimize etmek için sunucu yanıt kodlarını etkili bir şekilde nasıl yorumlayacağımızı öğreneceğiz.
HTTP yanıt kodu nedir?
HTTP yanıt kodu, tarayıcı isteklerini anlaşılır talimatlara çeviren web sunucularının dilidir. Sanal soruları yanıtlayan, onlara anlam ve yön veren bir şair gibidir. Yanıt kodları her zaman HTTP hata kodları değildir. Örneğin, "200 OK" her şeyin yolunda olduğu anlamına gelir, ancak HTTP Hatası "404 Bulunamadı" sayfanın sanal alanda kaybolduğu anlamına gelir. Her kod, sunucu durumunun benzersiz bir ifadesidir ve kodunun çözülmesi sanal dünyanın diğer tarafında neler olduğunu anlamamızı sağlar.
1xx kodları (Bilgi)
HTTP protokolündeki 1xx durum kodları, sunucu ile istemci arasındaki diyalogda bir tür ilk bağlantıdır. Bir isteğe tam bir yanıt sağlamak yerine, mevcut durum hakkında bilgi sağlar ve veri alışverişini daha verimli hale getirir. Bunlara daha yakından bakalım:
100 DevamSunucunun kullanıcıya yeşil ışık yakarak büyük bir isteği güvenli bir şekilde göndermeye devam etmesine izin verdiği HTTP yanıt kodu.
101 Protokolleri DeğiştirmeSunucu, istemciye oyunun kurallarını değiştirdiğini söyler, örneğin HTTP'den daha güvenli HTTPS'ye geçiş. Bu durumda, protokol değişikliği için "Yükseltme" başlığı kullanılır.
102 İşlemeBu kod, sunucunun isteği kabul ettiğini ancak hala karmaşık bir işlemle meşgul olduğunu belirten bir mesaj gibidir.
103 Erken İpuçlarıBurada sunucu, ana yanıttan önce istemciye yakın gelecekte önemli olabilecek bir şey hakkında uyarıda bulunan birkaç gösterge başlığı gönderir.
2xx kodu (Başarılı)
2xx grubundaki HTTP hata kodları sunucudan gelen başarılı bir isteği belirtir. Esasen web iletişimleri kapsamında bir "yeşil ışık" görevi görürler, her şeyin plana göre gittiğini ve başarıyla tamamlandığını doğrularlar.
200 TAMAM. Bu durum, sunucunun bir isteği GET yöntemiyle sorunsuz bir şekilde işlemesi ve yanıt olarak istenen verileri döndürmesi durumunda kullanılır. "Content-Type" başlığı yanıttaki içerik türünü bildirir. Sadece istemciye isteğin başarılı olduğunu bildirir.
201 OluşturulduBurada sunucu yeni bir kaynağın yaratıldığını duyurur.
202 Kabul edildiSunucu, kullanıcıya isteğin kabul edildiğini bildirir, ancak yanıt vermesi zaman alır.
203 Yetkili Olmayan BilgilerBu kod istemciye resmi olmayabilecek ancak karşılaştırma için kullanılabilecek veriler sağlar.
204 İçerik YokSunucu isteği işledi ancak ek içerik döndürmüyor.
205 İçeriği SıfırlaBurada istemciye, gönderdikten sonra geçerli görünümü veya veriyi sıfırlaması talimatı verilir.
206 Kısmi İçerik. Bu durum, yanıtın yalnızca istenen içeriğin bir kısmını içerdiğini gösterir. "Content-Range" başlığı kısmi içerik aralığını gösterir.
207 Çoklu Durum. Sunucu, istemciden gelen çoklu işlem isteğini başarıyla tamamladı ve yanıt, işlemlerin her birinin durumu hakkında bilgi içeriyor.
226 IM KullanıldıBu kod, sunucunun Artımlı Meta Veri (IM) yöntemini kullandığını ve yalnızca değiştirilen kaynak parçalarını istemciye geçirerek yanıt verdiğini gösterir.
3xx kodları (Yönlendirmeler)
HTTP protokolündeki 3xx kodları, kullanıcıyı yeni bir kaynak konumuna yönlendiren işaretçiler gibidir. İstemciye, istenen içeriği elde etmek veya başka bir kaynağa yönlendirilmek için takip adımlarının atılması gerektiğini bildirirler. Her birinin ayrıntılarına dalalım:
300 Çoktan Seçmeli. İstemci, kaynak için birkaç olası konum olduğunu belirten bir sinyal alır ve yanıt olarak bir seçenek verilir. Mevcut koşullarda, "Konum" başlığı kaynak için alternatif seçenekleri gösterebilir.
301 Kalıcı Olarak Taşındı. Sunucu, kaynağın kalıcı olarak başka bir yere taşındığını kullanıcıya bildirir.
302 Bulundu. Bu HTTP kodu geçici bir yönlendirmeye benzer. Sunucu tüketiciye kaynağın geçici olarak farklı bir URL'de mevcut olduğunu bildirir. "Konum" başlığı geçici yönlendirme için yeni URL'yi işaret eder.
303 Diğerlerini Görİstemciye kaynağın farklı bir URL'de mevcut olduğu ve bu yeni adrese bir GET isteği yapması gerektiği söylenir.
304 Modifiye Edilmedi. Bu durum, istemciye kaynağın son istekten bu yana değişmeden kaldığını ve tekrar indirilmesine gerek olmadığını söyler. Bir istekte bulunurken, kaynağın değiştirilip değiştirilmediğini kontrol etmek için "If-Modified-Since" başlığı kullanılır.
305 Proxy Kullan. Sunucu yanıt olarak, istenen kaynağa erişmek için belirtilen proxy'yi kullanması gerektiğini bildirir.
306 (ayrılmış) — Kod rezerve edilmiş, fakat aslında kullanılmıyor.
307 Geçici Yeniden YönlendirmeBu kod 302 Found'a benzer, ancak istemcinin orijinal istekte kullanılan istek yönteminde kalmasını gerektirir.
308 Kalıcı YönlendirmeKaynağın yeni bir URI'ye kalıcı olarak taşındığını ve istemcinin gelecekteki tüm istekler için yeni URI'yi kullanması gerektiğini belirtir.
4xx HTTP Hatası (İstemci hataları)
HTTP 4xx hata kodları istemci hatalarını gösterir. Bu, sorunun web tarayıcısı veya uygulama gibi kullanıcı tarafında olduğu anlamına gelir.
400 Bad RequestSunucu, sözdizimi hataları, geçersiz veriler veya istemci tarafındaki diğer hatalar nedeniyle isteği işleyemiyor.
401 Yetkisiz. Sunucu, sözdizimi hataları, geçersiz veriler veya istemci tarafındaki diğer hatalar nedeniyle isteği işleyemiyor.
402 Ödeme Gerekli. Kod şu anda aktif değil ve gelecekteki kullanım için ayrılmıştır. Gelecekte kaynağa erişmeden önce ödeme yapma ihtiyacını gösterebilir.
HTTP Hatası 403 Yasak. İstemcinin talep edilen kaynağa erişmek için yeterli hakları yok.
404 Bulunamadı. İstenen kaynak sunucuda mevcut değil. Bu en yaygın kullanıcı hatalarından biridir.
405 Yöntemi İzin Verilmedi. Sunucu bu kaynak sırasında belirtilen istek yöntemini desteklemiyor. "Allow" başlığı, kaynak için izin verilen yöntemleri belirtir. Bu kodla,
406 Kabul Edilemez. Sunucu, istemcinin kabul edebileceği bir formatta veri sağlayamıyor.
407 Proxy Kimlik Doğrulaması Gerekliİstenilen kaynağa erişim için proxy sunucusunda kimlik doğrulaması gereklidir.
408 İstek Zaman Aşımı. Sunucu istemciden bir istek almayı bekliyordu, ancak zaman aşımına uğradı. "Retry-After" başlığı, isteğin yeniden denenebileceği zamanı gösterebilir.
409 Çatışma. İstek, geçerli kaynak durumuyla çakışma nedeniyle tamamlanamıyor.
410 Gittiİstenen kaynak daha önce mevcuttu ancak artık silindi ve geri yüklenmesi beklenmiyor.
411 Uzunluk GerekliSunucu, istekte içerik uzunluğunun belirtilmesini talep eder; bu bilginin bulunmaması bir hata olarak kabul edilir.
412 Önkoşul Başarısızİstekte, yürütülmesini engelleyen bir ön koşul karşılanmıyor.
413 Yükü Çok Büyük. İstek verilerinin boyutu sunucu sınırlarını aşıyor.
414 URI Çok Uzun. İstekteki URI uzunluğu kabul edilebilir sınırları aşıyor.
415 Desteklenmeyen Ortam TürüSunucu istekte belirtilen veri türünü işleyemiyor.
416 Aralığı Karşılanamıyor. İstenen aralığın geçerli sunucu verileriyle eşleşmediği HTTP hatası.
417 Beklenti Başarısız Oldu"Bekleyin" başlığındaki beklenen koşul karşılanmadı.
418 Ben bir çaydanlığım. Bu kod bir şaka olarak eklenmiştir ve kullanıcı veya sunucu için gerçek bir eylem anlamına gelmez ve tam teşekküllü bir hata değildir. Sunucunun bir çaydanlık olduğunu ve kahve yapamayacağını belirtir.
421 Yanlış Yönlendirilmiş İstek. Sunucu, istekteki veya sunucu yapılandırmasındaki bir hata nedeniyle isteği işlemiyor.
422 İşlenemeyen VarlıkSunucu isteği anlıyor ancak veri hataları nedeniyle işlemiyor.
423 Kilitli. Kaynak engellendi ve işlenemiyor.
424 Başarısız Bağımlılıkİstek, yürütülmemiş başka bir isteğe bağlıdır.
425 Çok Erken. Sunucu erken geldiği için isteği işlemeye hazır değil.
426 Yükseltme GerekliSunucunun isteği işlemek için daha gelişmiş bir protokolün kullanılması gerekir.
428 Ön Koşul GerekliSunucunun istekte belirli ön koşulların belirtilmesini istemesi.
429 Çok Fazla İstekİstemci kısa bir süre içerisinde sunucunun sınırlarını aşarak çok fazla istek gönderdi.
431 İstek Başlık Alanları Çok Büyük. İstek başlıkları izin verilen maksimum boyutu aşıyor.
449 Tekrar deneyin. İsteğin geçerli sunucu tarafından çalıştırılamayacağını, ancak başka bir sunucu tarafından başarıyla işlenebileceğini ve istemcinin isteği yeni bir URI ile yeniden denemesi gerektiğini belirtir.
451 Yasal Nedenlerle Kullanılamıyor. Kaynak yasal nedenlerden dolayı mevcut değil.
499 Müşteri Kapalı İstekSunucu isteği aldı, ancak işlem tamamlanmadan önce bağlantı istemci tarafından kapatıldı.
HTTP 5xx hatası (Sunucu hataları)
HTTP 5xx hata kodları sunucu sorunlarını belirtir. Bu kodlar sunucu tarafında meydana gelen ve sunucunun kullanıcının isteğini doğru şekilde işlemesini engelleyen sorunları belirtir. Bunlara daha yakından bakalım:
HTTP Hatası 500 Dahili Sunucu Hatası. Sunucu, isteğin tamamlanmasını engelleyen beklenmeyen durumlarla karşılaşır. "Sunucu" başlığı, hatanın meydana geldiği sunucuyu gösterebilir.
501 Uygulanmadı. Sunucu, istemcinin isteğini işlemek için gereken işlevselliği desteklemiyor. "Via" başlığı, hatanın meydana geldiği proxy sunucusunu gösterebilir.
502 Bad GatewayBu kod, proxy olarak davranan sunucunun başka bir sunucudan yanlış bir yanıt aldığı anlamına gelir.
HTTP Hata 503 Hizmet KullanılamıyorSunucu geçici olarak istekleri işleyemiyor.
504 Ağ Geçidi Zaman AşımıProxy olarak çalışan sunucu, başka bir sunucudan zamanında yanıt alamadı.
505 HTTP Sürümü Desteklenmiyor. Sunucu, istekte belirtilen HTTP protokol sürümünü desteklemiyor. Bir yedekleme seçeneği olarak, "Yükseltme" başlığı desteklenen protokolleri belirtebilir.
506 Varyantı da Pazarlık YapıyorBu durum HTTP/1.1'de kullanılmaz; ancak sunucu içerik müzakere belirsizliğine yol açan bir dahili yapılandırma algılarsa bu yanıtı kullanabilir.
507 Yetersiz DepolamaSunucuda yeterli depolama alanı olmadığından isteği yerine getiremiyor.
508 Döngü AlgılandıSunucu isteği işlerken bir döngü tespit etti ve sonsuz bir döngüden kaçınmak için isteği tamamlamayı reddediyor.
509 Bant Genişliği Sınırı Aşıldı. Hata, yüksek miktarda istek veya trafik nedeniyle sunucunun bant genişliğinin aşılması durumunda oluşur.
510 Uzatılmamış.İsteğin devamı için istemcinin ek uzantıları transfer etmesi gerekir.
511 Ağ Kimlik Doğrulaması Gerekliİstemcinin ağa erişim sağlayabilmesi için kendisini doğrulaması gerekir.
Sayfa durum kodu nasıl kontrol edilir
Bu bölümde, sayfa durum kodunu kontrol etmenin üç ana yolunu ele alacağız: komut satırı aracılığıyla, bir web tarayıcısı kullanarak ve bağımsız çevrimiçi hizmetleri kullanarak. Bu yöntemlerin her birinin kendine özgü avantajları vardır ve farklı durumlarda yararlı olabilir.
Sunucu yanıtını komut satırı aracılığıyla kontrol etme
Komut satırı, bir web tarayıcısı kullanmak zorunda kalmadan sayfa durum kodunu kontrol etmek için kullanışlı bir yol sağlar. Bu yöntem için komut satırını açmanız ve şu komutu kullanmanız gerekir:
curl -I http://page-address
Bu komut belirtilen URL'ye bir HEAD isteği (yalnızca başlık isteği) gönderir ve HTTP durum kodu da dahil olmak üzere bilgileri görüntüler:
Yukarıdaki örnek başarılı bir yanıt kodunu gösterir. 404 Not Found HTTP hatası gibi bir hata kodu içeren bir yanıt durumunda, sonuç benzer görünecektir:
Sunucu yanıtını tarayıcı konsolu aracılığıyla kontrol etme
Web tarayıcısı geliştirici konsolu, sayfa durum kodunu kontrol etmek de dahil olmak üzere çeşitli işlemleri yürütmek için araçlar sağlar. Sunucu yanıtındaki HTTP kodunu görmek için, kullanılan tarayıcıya bağlı olarak geliştirici konsolunu açmanız (Ctrl+Shift+K) veya (Ctrl+shift+J) gerekir. Sonra, "ağ" bölümünü seçin ve istediğiniz sayfayı yükleyin:
Bağımsız araçlar kullanılarak sunucu yanıtının kontrol edilmesi
Web sitesi sayfa durum kodunu kontrol etmek için araçlar sağlayan çok sayıda bağımsız çevrimiçi hizmet vardır. Bu hizmetler genellikle kaynağınızın kullanılabilirliği ve performansı hakkında hızlı bir genel bakış elde etmenizi sağlar. Hepsi aynı prensiple çalışır. Örnek olarak, en popüler kaynağı ele alacağız - httpsstatus.io
Öncelikle servisin kendisini açmanız, ardından cevabını bulmak istediğiniz sayfanın adresini girmeniz ve doğrulama talebinde bulunmanız gerekmektedir:
Sonuç sayfanın alt kısmında gösterilecektir:
Sonuç
Sonuç olarak, HTTP hata kodlarını anlama ve okuyabilmenin web geliştirme ve sunucu bakımıyla ilgilenen herkes için önemli bir beceri olduğu vurgulanmalıdır. Her hatayı çözüp bunları tespit etmek için araçları incelerken, bu web hizmetleri yönlerini etkili bir şekilde yönetmenin neden bu kadar önemli olduğunu görüyoruz.