Herhangi bir HTTP durum kodunun ne anlama geldiğini, sunucuların hangi durumlarda gönderdiğini ve hangi spesifikasyonda tanımlandığını öğrenin. Numara veya anahtar kelimeyle arayın, sınıfa göre filtreleyin ve doğrudan bir koda bağlantı verin.
Sunucu istek başlıklarını aldı; istemci gövdeyi gönderebilir. İstemcinin büyük bir gövde yüklemeden önce “Expect: 100-continue” gönderdiği durumlarda görülür.
Tarayıcının Link başlıklarında listelenen kaynakları önceden yüklemeye başlaması için nihai yanıttan önce gönderilir. Sayfa yüklemelerini hızlandırmak amacıyla CDN'ler ve sunucular tarafından kullanılır.
İstek başarılı oldu ve genellikle Location başlığıyla belirtilen yeni bir kaynak oluşturdu. Kayıt oluşturan başarılı bir POST isteğinden sonra sık görülür.
İstek başarılı oldu ve döndürülecek içerik yok. DELETE isteklerinde ve istemcinin yanıt gövdesine ihtiyaç duymadığı veri kaydetme işlemlerinde sık kullanılır.
Sunucu yalnızca istemcinin istediği bayt aralığını döndürür. Videolar akış hâlinde oynatıldığında, indirmeler sürdürüldüğünde veya istemci bir Range başlığı gönderdiğinde görülür.
Kaynak, Location başlığında belirtilen başka bir URL'de geçici olarak bulunuyor. Giriş işlemlerinden sonra ve kısa süreli yönlendirmelerde sık kullanılır; tarayıcılar genellikle GET isteğiyle takip eder.
İstemci, sonucu başka bir URL'den GET isteğiyle almalıdır. Bir form POST isteğinden sonra onay sayfasına yönlendirme yapmak için kullanılır (Post/Redirect/Get kalıbı).
Önbellekteki kopya hâlâ geçerlidir; bu nedenle sunucu gövde göndermez. Tarayıcı, önbelleğe alınmış bir dosyayı If-None-Match veya If-Modified-Since ile yeniden doğruladığında görülür.
İstemciden, Location başlığında belirtilen proxy'yi kullanmasını istedi. Güvenlik nedenleriyle kullanımdan kaldırılmıştır ve tarayıcılar tarafından yok sayılır.
Kaynak geçici olarak başka bir URL'de bulunur ve istemci isteği aynı yöntem ve gövdeyle yinelemelidir. Tarayıcılar tarafından HTTPS'ye yapılan dahili HSTS yönlendirmelerinde de kullanılır.
Kaynak kalıcı olarak taşınmıştır ve istemci yeni URL'de aynı yöntemi ve gövdeyi kullanmalıdır. 307'nin kalıcı karşılığıdır ve POST isteklerinin güvenli biçimde yönlendirilmesini sağlar.
İstek hatalı biçimlendirilmiş olduğu için sunucu tarafından işlenemez. Örneğin geçersiz JSON, hatalı bir sorgu parametresi veya bozuk bir çerez buna neden olabilir.
İstekte geçerli kimlik doğrulama bilgileri yoktur. Adı aksini düşündürse de bu kod, “kimliği doğrulanmamış” anlamına gelir; sunucu, nasıl oturum açılacağını açıklayan bir WWW-Authenticate başlığı gönderir.
Sunucu isteği anladı ancak reddediyor; yeniden oturum açmak da çözüm olmaz. İzinlerin eksik olduğu, dizin listelemenin kapalı olduğu veya güvenlik duvarının istemciyi engellediği durumlarda görülür.
Sunucu istenen kaynağı bulamıyor. Genellikle bağlantının yanlış yazılmasından veya güncelliğini yitirmesinden, sayfanın silinmesinden ya da API yolunun hatalı olmasından kaynaklanır.
Kaynak mevcut olsa da kullanılan HTTP yöntemini desteklemiyor. Örneğin yalnızca okumaya açık bir URL'ye POST isteği gönderilmesi bu duruma neden olabilir. Yanıttaki Allow başlığı, izin verilen yöntemleri listeler.
401'e benzer; ancak istemcinin önce bir proxy üzerinden kimliğini doğrulaması gerekir. Kimlik doğrulaması isteyen proxy'lerin kullanıldığı kurumsal ağlarda görülür.
Kaynak kalıcı olarak kaldırılmıştır ve geri gelmeyecektir. 404'ten farklı olarak arama motorlarına URL'yi dizinlerinden daha hızlı çıkarmaları gerektiğini bildirir.
İstek başlıklarında yer alan If-Match gibi bir koşul karşılanmadı. İstemcinin son okumasından bu yana değişen bir kaynağın üzerine yazılmasını önlemek için kullanılır.
URL, sunucunun işleyebileceğinden daha uzun. Genellikle bir formun GET ile çok fazla veri göndermesi veya sürekli parametre ekleyen bir yönlendirme döngüsü buna neden olur.
1998 tarihli Hyper Text Coffee Pot Control Protocol'ten bir 1 Nisan şakası: kahve yapmayı reddeden bir çaydanlık. HTTP, kodu kullanılmayan olarak ayırmıştır; ancak bazı sunucular sürpriz bir özellik olarak veya istenmeyen botları reddetmek için bu kodu döndürür.
Standart bir kod değildir. Laravel, bir formun CSRF belirteci eksik veya süresi dolmuş olduğunda bu kodu döndürür; genellikle oturum zaman aşımına uğradıktan sonra görülür.
İstek, bu ana makine için yanıt oluşturamayan bir sunucuya ulaştı. Örneğin bir HTTP/2 bağlantısının farklı bir alan adı için yeniden kullanılması bu duruma neden olabilir.
İstek düzgün biçimlendirilmiş ancak içeriği geçersiz. Örneğin doğrulama kurallarını geçemeyen bir form bu duruma neden olabilir. API'lerde doğrulama hataları için yaygın olarak kullanılır.
İstemci, belirli bir süre içinde çok fazla istek gönderdi. API'ler bu kodu istek sınırı uygulamak için kullanır ve yeniden ne zaman deneneceğini belirten bir Retry-After başlığı ekleyebilir.
Standart bir kod değildir. nginx, genellikle istenmeyen trafiği engellemek için herhangi bir yanıt göndermeden bağlantıyı kapatırken bu kodu dahili olarak kullanır; istemciler bu kodu gerçekte almaz.
Standart bir kod değildir. Sunucu yanıt vermeden önce istemci bağlantıyı kapattığında nginx bu kodu günlüğe kaydeder. Örneğin kullanıcı yavaş yüklenen bir sayfayı iptal ettiğinde veya istemci tarafında zaman aşımı yaşandığında görülür.
Sunucuda beklenmeyen bir hata oluştu ve istek tamamlanamadı. Bir hata, çökme veya yanlış yapılandırmadan kaynaklanan genel bir hatadır; ayrıntılar sunucu günlüklerinde bulunur.
Bir ağ geçidi veya proxy, üst sunucudan geçersiz bir yanıt aldı. Genellikle nginx'in arkasındaki uygulama ya da yük dengeleyici çöktüğünde veya yeniden başlatıldığında görülür.
Sunucu aşırı yüklendiği veya bakım nedeniyle kapalı olduğu için isteği geçici olarak işleyemiyor. Retry-After başlığı, yeniden ne zaman denenebileceğini belirtebilir.
Bir ağ geçidi veya proxy, üst sunucudan zamanında yanıt alamadı. Uzun süren bir veritabanı sorgusu gibi arka uç isteğinin çok yavaş olduğu durumlarda görülür.
Ağa erişmek için istemcinin kimlik doğrulaması yapması gerekir. Giriş yapmadan önce otel, havaalanı veya kafe Wi-Fi ağlarındaki captive portal'lar tarafından gönderilir.
Standart bir kod değildir. Cloudflare, kaynak sunucu bağlantıyı reddettiğinde bu kodu döndürür. Bunun nedeni genellikle web sunucusunun kapalı olması veya Cloudflare'ın IP adreslerini engellemesidir.
Standart bir kod değildir. Cloudflare, kaynak sunucuyla bağlantı kurduğu hâlde zaman aşımı süresi içinde (varsayılan olarak 100 saniye) HTTP yanıtı alamadığında bu kodu döndürür.
Standart bir kod değildir. Kaynak sunucunun SSL sertifikası geçersiz olduğunda ve Full (strict) SSL modu etkinleştirildiğinde Cloudflare bu kodu döndürür.
Tanımlandığı yer: Cloudflare
Nasıl kullanılır?
Bir kod numarası (404 veya tüm sunucu hataları için yalnızca 5 gibi) ya da “yönlendirme” veya “zaman aşımı” gibi bir anahtar kelime yazın.
Listeyi sınıf filtresiyle daraltın: bilgilendirme, başarılı, yönlendirme, istemci hatası veya sunucu hatası.
Örneğin hata raporlarında paylaşmak üzere ilgili koda doğrudan bağlantı oluşturmak için kodun yanındaki “Bağlantıyı kopyala” seçeneğini kullanın.
Nasıl çalışır?
Her HTTP yanıtı üç basamaklı bir durum koduyla başlar. İlk basamak, yanıtın sınıfını belirtir: 1xx bilgilendirme yanıtları, 2xx başarılı yanıtlar, 3xx yönlendirmeler, 4xx istekten kaynaklanan hatalar ve 5xx sunucu tarafındaki hatalar. Belirli bir kodu tanımayan istemciler, o kodu sınıfındaki x00 kodu gibi değerlendirir. Bu nedenle bilinmeyen bir 4xx kodu 400 gibi işlenir.
Temel kodlar, eski RFC 7231'in yerini alan RFC 9110'da (HTTP Semantics, 2022) tanımlanmıştır. Diğer kodlar ise WebDAV (RFC 4918), 428, 429, 431 ve 511 kodları için RFC 6585, 451 için RFC 7725 ve 425 için RFC 8470 gibi ek standartlardan gelir. RFC 9110 iki kodun adını da değiştirmiştir: 413 artık “Content Too Large”, 422 ise “Unprocessable Content” olarak adlandırılır. Bu kodları eski adları olan “Payload Too Large” ve “Unprocessable Entity” ile de görebilirsiniz.
Günlüklerde karşılaşacağınız bazı kodlar hiçbir standardın parçası değildir. nginx, 444 ve 494–499 kodlarını kendi içinde kullanır (499, istemcinin beklemekten vazgeçtiğini gösterir). Cloudflare ise kaynak sunucudan düzgün bir yanıt alamadığında 520–526 kodlarını döndürür. Listede bu kodlar “Non-standard” olarak işaretlenmiştir. “Not Found” gibi neden ifadeleri, spesifikasyonlarda yazıldığı şekliyle İngilizce gösterilir; HTTP/2 ve HTTP/3 yalnızca kod numarasını gönderir.
Örnekler
Site taşırken 301 mi, 308 mi?
Her ikisi de kalıcı yönlendirmedir. Normal sayfa taşımalarında 301 kullanın; istemcilerin POST veya PUT isteklerini yeni URL'ye tekrarlaması gerekiyorsa 308 kullanın. Bunun nedeni, bazı istemcilerin 301 sonrasında POST isteğini GET'e dönüştürmesidir.
401 ve 403 arasındaki fark
Bir API, token gönderilmediğinde veya süresi dolmuş bir token gönderildiğinde 401 döndürür; bu durumda istemcinin oturum açması gerekir. Token geçerli ancak kullanıcının izni yoksa 403 döndürür; yeniden oturum açmak bu durumda işe yaramaz.
nginx arkasındaki 502 hatasını inceleme
nginx'ten gelen 502 Bad Gateway, arkasındaki uygulamanın düzgün yanıt vermediği anlamına gelir. Uygulama işleminin çalışıp çalışmadığını ve günlüklerde neler yazdığını kontrol edin; 504 ise uygulamanın yanıtının çok uzun sürdüğünü gösterir.
Sık sorulan sorular
404 ile 410 arasındaki fark nedir?
404, sunucunun kaynağı bulamadığı anlamına gelir ve kaynağın gelecekteki durumu hakkında bilgi vermez. 410 ise kaynağın bilerek kaldırıldığını ve geri dönmeyeceğini belirtir; bu, arama motorlarının URL'yi daha erken dizinden çıkarmasına yardımcı olur.
Doğrulama hatasında 400 mü, 422 mi döndürülmeli?
İkisi de kullanılır. Sunucunun ayrıştıramadığı istekler, örneğin bozuk JSON, için 400 uygundur. Doğru ayrıştırılan ancak geçersiz değerler içeren istekler, örneğin @ işareti olmayan bir e-posta alanı, için 422 uygundur.
418 I'm a teapot gerçek bir durum kodu mu?
1998 tarihli bir 1 Nisan RFC'sinden gelir. RFC 9110, başka bir amaçla kullanılmaması için 418'i kullanılmayan bir kod olarak ayırır. Bazı sunucular şaka amaçlı bu kodu döndürür, ancak standart bir anlamı yoktur.
499 nereden geliyor?
499, nginx'e özgü bir koddur. İstemci, sunucu yanıt göndermeden önce bağlantıyı kapattığında nginx günlüklerinde görünür. İstemci 499 yanıtını hiç almaz; bu kod genellikle yavaş yanıtların veya istemci tarafındaki zaman aşımlarının işaretidir.
Arama motorları 302'yi 301 gibi mi değerlendirir?
302 geçici bir taşınmayı belirtir; bu nedenle arama motorları genellikle başlangıçta özgün URL'yi dizinde tutar. 302 uzun süre kullanılırsa Google bunu kalıcı bir yönlendirme olarak değerlendirebilir. Kalıcı taşınmalar için 301 veya 308 kullanın.
Gizlilik
Liste sayfanın bir parçasıdır. Arama ve filtreleme tarayıcınızda yapılır; arama terimleriniz hiçbir yere gönderilmez ve analiz verilerine dahil edilmez.