HTTP Durum Kodları Rehberi

Tüm resmi HTTP durum kodlarının aranabilir bir rehberi — her birinin ne anlama geldiği ve bir sunucunun onu ne zaman göndermesi gerektiği, RFC 9110 ve ilgili RFC'lere dayalı.

201 görüntülenme

Durum Kodları Neden İlk Rakama Göre Gruplanır

Her HTTP durum kodu üç basamaklı bir sayıdır ve yalnızca ilk rakam bile, istemcinin yanıtın geri kalanını okumadan önce genel kategorisini anlamasını sağlar — bu, HTTP'nin en erken spesifikasyonlarına kadar uzanan ve bugün RFC 9110'da resmileştirilen bir tasarım kararıdır. RFC 9110, daha eski RFC 7230-7235 serisini birleştirip yerine geçerek HTTP'nin anlambilimini herhangi bir tek protokol sürümünden bağımsız tanımlar (HTTP/1.1, HTTP/2, HTTP/3 hepsi aynı durum kodu anlamlarını paylaşır). 1xx (Bilgilendirme), isteğin alındığını ve anlaşıldığını, işlemin devam ettiğini gösterir — bunlar istemcinin kesin olarak ele almaması gereken geçici yanıtlardır. 2xx (Başarı), isteğin alındığını, anlaşıldığını ve kabul edildiğini gösterir. 3xx (Yönlendirme), isteği tamamlamak için genelde farklı bir URL getirmek olan ek bir işlem gerektiğini gösterir. 4xx (İstemci Hatası), gönderildiği haliyle isteğin istemcinin neden olduğu bir sorun içerdiğini gösterir — bozuk sözdizimi, eksik kimlik doğrulama, var olmayan bir kaynak. 5xx (Sunucu Hatası), isteğin görünüşte geçerli olduğunu ama sunucunun onu yerine getiremediğini gösterir. Bu ilk-rakam sistemi, belirli bir kodun kendisi hakkında hiçbir şey bilmeyen ama sadece "4" rakamını tanıyan bir istemcinin bile, kendi isteğinde düzeltilmesi gereken bir şey olduğunu — aynı şekilde yeniden denemek yerine — doğru biçimde anlamasını sağlar; standardın bunu zorunlu kılmasının nedeni tam olarak bu yedek davranıştır.

İkinci ve üçüncü basamaklar her sınıfı belirli, belgelenmiş anlamlara böler ve bir istemcinin özel olarak tanımadığı herhangi bir kod için genel sınıf davranışına geri dönmesi beklenir — 226 veya 508 gibi belirsiz veya daha yeni kodların, açık destek olmadan bile eski yazılımlar tarafından yaklaşık olarak doğru şekilde ele alınmasının hâlâ güvenli olmasının nedeni budur. Kodlar da serbestçe icat edilmez: tam kayıt, "599" veya "250"nin iki farklı sunucuda iki farklı anlama gelmemesi için tam olarak IANA (İnternet Tahsisli Numaralar Kurumu) tarafından tutulur — etkin kullanımdaki her kod, tam anlambilimini tanımlayan belirli bir RFC'ye kadar izlenebilir; bunlardan birkaçı orijinal HTTP/1.1 spesifikasyonunu belirli protokoller için genişletir, en görünür olanı bu sayfadaki 207, 208, 422, 423, 424 ve 507/508 kodlarının kaynağı olan WebDAV'dır (RFC 4918).

Kesin Olarak Bilinmeye Değer İki Kod: 404 ile 410

En sık karıştırılan iki kod 404 Bulunamadı ile 410 Kalıcı Olarak Kaldırıldı'dır ve aradaki fark kozmetik değildir — bir arama motorunun ve tarayıcının nasıl davrandığını değiştirir. 404 kasıtlı olarak belirsizdir: sunucunun, kaynağın o URL'de hiç var olup olmadığı, geri gelip gelmeyeceği veya URL'nin sadece yanlış yazılıp yazılmadığı hakkında hiçbir bilgisi yoktur. 410 ise kasıtlı, daha güçlü bir ifadedir: kaynak tam olarak o URL'de var olmuştur ve kasıtlı olarak, kalıcı olarak, yönlendirme adresi olmadan kaldırılmıştır — RFC 9110, bir 404'ün kesinliği hafife alacağı bu "durumun kalıcı olması muhtemel" durumu için özellikle 410'u önerir. Arama motorları bunu pratikte farklı ele alır: tekrar tekrar 404 döndüren bir URL genelde yalnızca geri gelme ihtimaline karşı uzun bir süre boyunca birkaç kez yeniden taranıp indeksten çıkarılırken, bir 410 kasıtlı kaldırmayı işaret eder ve arama motorları genelde buna daha hızlı tepki vererek sayfayı daha erken indeksten çıkarır, çünkü sunucu geri dönmeyeceğini açıkça belirtmiştir. Bir sayfayı kalıcı olarak kaldırırken — her şey için varsayılan olarak 404 kullanmak yerine — 410'u doğru kullanmak, küçük ama gerçek bir teknik SEO aracıdır.

  • 301 ile 302, 307, 308 arasındaki fark: 301 ve 308 ikisi de "kalıcı olarak taşındı" anlamına gelirken, 302 ve 307 ikisi de "geçici olarak taşındı" anlamına gelir — daha yeni 307/308 çifti, özellikle yönlendirmede istek yönteminin ve gövdesinin korunmasını garanti etmek için tanıtılmıştır (bir POST, POST olarak kalır), çünkü yaygın tarihsel tarayıcı davranışı 301/302 yönlendirmelerini sessizce bir GET'e dönüştürüyordu; bu da form yeniden gönderimini bozuyordu ve yeni kodlar bunu düzeltir.
  • 401 ile 403 arasındaki fark: 401 Yetkisiz, kafa karıştırıcı ismine rağmen teknik olarak "kimliğiniz doğrulanmadı — giriş yapın" anlamına gelir; 403 Yasak ise "kimliğiniz belirlendi, ama buraya erişmenize izin verilmiyor" anlamına gelir — birçok API bu ayrımı pratikte bulanıklaştırır, ama spesifikasyon ikisini net şekilde ayrı tutar.
  • 429 Çok Fazla İstek (RFC 6585), standart hız-sınırlama yanıtıdır ve genelde istemciye tam olarak ne kadar bekleyip yeniden denemesi gerektiğini söyleyen bir Retry-After başlığıyla birlikte kullanılır.
  • 1xx kodları doğrudan nadiren görülür, çünkü çoğu HTTP istemci kütüphanesi bunları uygulama kodunuz bir yanıt görmeden önce şeffaf biçimde ele alır — örneğin 100 Devam Et, bir istemcinin büyük bir istek gövdesini göndermeye değip değmeyeceğini, göndermeden önce kontrol etmesini sağlar.

Sıkça Sorulan Sorular

404 ile 410 arasındaki gerçek fark nedir?

İkisi de kaynağın bulunamadığı anlamına gelir, ama 404 kaynağın hiç var olup olmadığını veya geri gelip gelmeyeceğini belirsiz bırakır; 410 ise kaynağın o URL'de var olduğunu ve kalıcı, kasıtlı olarak kaldırıldığını belirten kasıtlı bir ifadedir. Arama motorları genelde bir 410 sayfasını bir 404'ten daha hızlı indeksten çıkarır, çünkü sunucu kaldırmanın kalıcı olduğunu açıkça doğrulamıştır.

418 "Ben Bir Demlikim" gerçek, kullanılabilir bir durum kodu mu?

Kökeni, 1998'deki "Hyper Text Coffee Pot Control Protocol" adlı 1 Nisan şakası RFC'si olan RFC 2324'e dayanır. Hiçbir zaman ciddi olarak tasarlanmamıştır, ama belirgin, belirsizliğe yer bırakmayan bir test kodu olarak kullanışlı olduğu kanıtlanmıştır ve RFC 9110 bugün onu, durumunun isteğe bağlı olduğu ve gerçek sunucular tarafından uygulanmasının beklenmediği açık bir notla resmen korur.

301 ve 302 yönlendirmeleri neden bazen form gönderimlerini bozar?

Tarihsel olarak, birçok tarayıcı bir 301 veya 302'yi takip ederken yönlendirilen bir POST isteğini sessizce bir GET isteğine dönüştürüyor, gönderilen gövdeyi atıyordu. Daha yeni 307 (Geçici Yönlendirme) ve 308 (Kalıcı Yönlendirme) kodları, özellikle orijinal HTTP yönteminin ve istek gövdesinin yönlendirme boyunca korunmasını garanti etmek için tanıtılmıştır.

401 ile 403 arasındaki fark nedir?

401 Yetkisiz, ismine rağmen aslında istemcinin hiç kimlik doğrulaması yapmadığı anlamına gelir — kimlik bilgisi istemektedir. 403 Yasak ise istemcinin kimliğinin belirlendiğini ama o belirli kaynağa erişmesine açıkça izin verilmediğini gösterir. Birçok gerçek dünya API'si bunları gevşek veya birbirinin yerine kullanır, ama spesifikasyon anlamları ayrı tutar.

507 veya 423 gibi WebDAV'a özgü kodlar nereden geliyor?

Bunlar, düz HTTP'yi bir kaynağı kilitleme (423 Kilitli) veya sunucunun depolama alanının bittiğini bildirme (507 Yetersiz Depolama) gibi uzaktan dosya yönetimi işlemleriyle genişleten WebDAV (Web Distributed Authoring and Versioning) spesifikasyonu olan RFC 4918'de tanımlanır. Temel HTTP kodlarının yanında resmi IANA HTTP durum kodu kaydının bir parçası olmaya devam ederler.

Yorumlar

Henüz yorum yok — ilk yorumu siz yazın!

Benzer Araçlar