HTTP durum kodları rehberi
Her HTTP yanıtı, istemciye ne olduğunu bildiren üç haneli bir durum koduyla başlar. Kodlara sınıflarına göre göz atın; her kodun sade bir açıklamasını, örnek yanıtını ve yönlendirmeler ile SEO açısından ne anlama geldiğini burada bulabilirsiniz.
1xx Bilgilendirme
İstek alındı ve işlem sürüyor. Bu ara yanıtlar nihai yanıttan önce gelir ve hiçbir zaman bir yönlendirme zincirini sonlandırmaz.
- 100
Continue
Ara yanıt: sunucu istek başlıklarını kabul etti ve “Expect: 100-continue” gönderen istemci artık istek gövdesini göndermelidir. - 101
Switching Protocols
Sunucu, istemcinin Upgrade isteğini kabul eder ve bu bağlantıyı başka bir protokole geçirir; pratikte bu neredeyse her zaman WebSocket'tir. - 102
Processing
Sunucunun uzun bir istek üzerinde hâlâ çalıştığını ve istemcinin beklemeye devam etmesi gerektiğini bildiren, artık kullanılmayan bir WebDAV ara yanıtı. - 103
Early Hints
Sunucu hâlâ çalışırken tarayıcının kaynakları önceden yükleyebilmesi veya bağlantı açabilmesi için Link başlıklarını nihai yanıttan önce gönderen ara yanıt.
2xx Başarılı
İstek alındı, anlaşıldı ve kabul edildi. Sağlıklı bir yönlendirme zinciri bu kodlardan biriyle, genellikle 200 OK ile biter.
- 200
OK
İstek başarılı oldu; GET için gövde istenen kaynağı içerir. Her yönlendirme zinciri 200 döndüren bir URL'de sona ermelidir. - 201
Created
İstek başarılı oldu ve genellikle POST veya PUT sonrasında yeni bir kaynak oluşturuldu. Varsa Location başlığı yeni kaynağı gösterir. - 202
Accepted
İstek işlenmek üzere kabul edildi ama henüz tamamlanmadı. Asenkron işler için kullanılır; nihai sonuç garanti edilmez. - 203
Non-Authoritative Information
İstek başarılı oldu, ancak içeriği dönüştüren bir proxy yanıtı değiştirdi; içerik, kaynak sunucunun gönderdiğiyle birebir aynı değildir. - 204
No Content
İstek başarılı oldu ve gönderilecek içerik yok. Tarayıcı mevcut sayfada kalır; DELETE, beacon'lar ve CORS preflight için yaygındır. - 205
Reset Content
İstek başarılı oldu ve istemci belge görünümünü sıfırlamalıdır; örneğin az önce gönderilen formu temizlemelidir. - 206
Partial Content
Sunucu yalnızca istemcinin Range başlığıyla istediği bayt aralıklarını gönderir; video akışında ve kaldığı yerden devam eden indirmelerde kullanılır. - 207
Multi-Status
Birden fazla kaynak veya özellik için ayrı ayrı durum kodlarını bir XML multistatus gövdesinde taşıyan WebDAV yanıtı. - 208
Already Reported
WebDAV 207 yanıtının içinde kullanılır: bu koleksiyonun üyeleri daha önce listelendi. Böylece bağlamalar döngü oluşturduğunda sonsuz tekrar önlenir. - 226
IM Used
Sunucu bir GET isteğine delta kodlamayla (RFC 3229) yanıt verdi: gövde yalnızca istemcide zaten bulunan bir sürüme göre yapılan değişiklikleri içerir.
3xx Yönlendirme
İstemcinin ek bir işlem yapması gerekir; bu genellikle Location başlığındaki URL'ye yeni bir istek göndermektir. Yönlendirme zincirini oluşturan kodlar bunlardır.
- 300
Multiple Choices
Kaynağın birden fazla temsili vardır ve istemci birini seçebilir. Tarayıcılar, Location başlığı olsa bile 300'ü otomatik olarak takip etmez. - 301
Moved Permanently
Kaynağın Location başlığında belirtilen yeni ve kalıcı bir URL'si var. İstemciler ve arama motorları bundan sonra yeni URL'yi kullanmalıdır. - 302
Found
Kaynak geçici olarak başka bir URL'de. İstemciler Location başlığını takip eder, ancak sonraki isteklerde orijinal URL'yi kullanmaya devam etmelidir. - 303
See Other
İstemciyi GET ile alması gereken başka bir URL'ye yönlendirir; genellikle form gönderiminden sonra sonuç sayfası için kullanılır (Post/Redirect/Get). - 304
Not Modified
Koşullu bir GET veya HEAD isteğine yanıt: istemcinin önbellekteki kopyası hâlâ geçerli; sunucu gövde göndermez ve kopya yeniden kullanılır. - 305
Use Proxy
Kullanımdan kaldırıldı. İstemciye isteği Location'da belirtilen proxy üzerinden tekrarlamasını söylerdi; tarayıcılar güvenlik nedeniyle bunu yok sayar. - 306
Kullanılmıyor (eski adıyla Switch Proxy)
Ayrılmış ve kullanılmıyor. 306 bir zamanlar “Switch Proxy” olarak önerildi ama bırakıldı; kullanılmamalıdır ve istemciler onu bilinmeyen bir 3xx kodu sayar. - 307
Temporary Redirect
İsteğin Location URL'sinde aynı metot ve gövdeyle tekrarlanmasını zorunlu kılan geçici yönlendirme; POST'u GET'e çevirebilen 302'den farkı budur. - 308
Permanent Redirect
İstek metodunu ve gövdesini koruyan kalıcı yönlendirme. 301'de olduğu gibi artık yeni URL kullanılmalıdır, ancak POST asla GET'e dönüşmez.
4xx İstemci hatası
İstek gönderildiği şekliyle karşılanamıyor: sayfa yok, erişim reddedildi ya da istemci çok fazla istek gönderdi.
- 400
Bad Request
Sunucu, hatalı söz dizimi, geçersiz bir URL veya aşırı büyük çerezler gibi bir istemci hatası nedeniyle isteği işlemez. - 401
Unauthorized
İstek geçerli kimlik doğrulaması gerektirir. Sunucu, nasıl kimlik doğrulanacağını (ör. Basic veya Bearer) bildiren bir WWW-Authenticate başlığı göndermelidir. - 402
Payment Required
HTTP'de ileride kullanılmak üzere ayrılmıştır. Pratikte bazı API'ler ve hizmetler, ödeme, kredi veya abonelik gerektiğinde bu kodu kullanır. - 403
Forbidden
Sunucu isteği anladı ama yetki vermeyi reddediyor. 401'den farklı olarak aynı kimlik bilgilerini yeniden göndermek işe yaramaz. - 404
Not Found
Sunucuda bu URL'de hiçbir şey yok ya da bir şey olup olmadığını söylemek istemiyor. Yokluğun geçici mi kalıcı mı olduğunu belirtmez. - 405
Method Not Allowed
URL mevcut, ancak kullanılan HTTP metodunu desteklemiyor; örneğin statik bir sayfaya POST. Allow başlığı desteklenen metotları listeler. - 406
Not Acceptable
Sunucu, istemcinin Accept başlıklarına (biçim, dil, kodlama) uyan bir yanıt üretemiyor ve varsayılan bir yanıt da göndermiyor. - 407
Proxy Authentication Required
401'e benzer, ancak kimlik doğrulamayı istemci ile sunucu arasındaki bir proxy ister. Proxy-Authenticate başlığı nasıl doğrulanacağını belirtir. - 408
Request Timeout
Sunucu eksiksiz bir isteği zamanında alamadı ve bağlantıyı kapatıyor. İstemci isteği yeni bir bağlantı üzerinden yeniden gönderebilir. - 409
Conflict
İstek, kaynağın mevcut durumuyla çakışıyor; örneğin bir düzenleme çakışması, yinelenen bir kayıt veya sürüm uyuşmazlığı. - 410
Gone
Kaynak bilerek kaldırıldı ve geri gelmesi beklenmiyor. 404 Not Found'dan daha açık ve kalıcı bir sinyaldir. - 411
Length Required
Sunucu, gövdesi olan ama Content-Length başlığı olmayan bir isteği reddediyor. İstemci isteği geçerli bir Content-Length ile yeniden gönderebilir. - 412
Precondition Failed
İstek başlıklarındaki If-Match veya If-Unmodified-Since gibi bir koşul yanlış çıktı; bu yüzden sunucu değişikliği uygulamadı. - 413
Content Too Large
İstek gövdesi sunucunun kabul ettiği boyuttan büyük; örneğin aşırı büyük yüklemelerde. Eski adları: “Payload Too Large” ve “Request Entity Too Large”. - 414
URI Too Long
İstenen URL, sunucunun işleyeceğinden daha uzun; örneğin bir yönlendirme döngüsü URL'ye sürekli parametre eklediği için. - 415
Unsupported Media Type
Sunucu, istek gövdesini biçimi (Content-Type) veya içerik kodlaması (Content-Encoding) desteklenmediği için reddediyor. - 416
Range Not Satisfiable
İsteğin Range başlığındaki bayt aralığı dosyanın dışında kalıyor; örneğin bir indirme, değişmiş bir dosyanın sonunun ötesinden devam ettiğinde. - 417
Expectation Failed
Sunucu, isteğin Expect başlığındaki beklentiyi karşılayamıyor. Pratikte bu, Expect: 100-continue desteklenmiyor demektir. - 418
I'm a Teapot
1998 tarihli kahve demliği protokolünden (RFC 2324) bir 1 Nisan şakası. HTTP'de kullanılmamak üzere ayrılmıştır, ancak bazı siteler onu bilerek döndürür. - 421
Misdirected Request
İstek, bu ana makine adı için yanıt veremeyen bir sunucuya ulaştı; nedeni çoğu zaman bir TLS SNI uyuşmazlığı veya yeniden kullanılan bir HTTP/2 bağlantısıdır. - 422
Unprocessable Content
İstek doğru biçimlendirilmiş, ancak içeriği anlamsal olarak geçersiz; genellikle bir API'deki doğrulama hatasıdır. Eski adı: “Unprocessable Entity”. - 423
Locked
WebDAV: kaynak kilitli, bu nedenle metot şu anda uygulanamıyor. İstemcinin kilit token'ına sahip olması veya kilidin kalkmasını beklemesi gerekir. - 424
Failed Dependency
WebDAV: metot, bağlı olduğu başka bir işlem başarısız olduğu için uygulanamadı; örneğin bir PROPPATCH içindeki tek bir özellik. - 425
Too Early
Sunucu, TLS early data (0-RTT) olarak gönderilen bir isteği tekrar oynatılabileceği için işlemez. İstemci el sıkışmadan sonra yeniden dener. - 426
Upgrade Required
Sunucu, isteği mevcut protokolle işlemeyi reddediyor ve Upgrade başlığında belirtilen protokole geçilmesini istiyor. - 428
Precondition Required
Sunucu, birden fazla istemci aynı kaynağı düzenlediğinde güncellemelerin kaybolmaması için isteğin koşullu (If-Match) olmasını zorunlu tutuyor. - 429
Too Many Requests
İstemci belirli bir sürede çok fazla istek gönderdi (istek sınırı). Retry-After başlığı, tekrar denemeden önce ne kadar beklenmesi gerektiğini belirtebilir. - 431
Request Header Fields Too Large
Sunucu, başlıkları çok büyük olduğu için isteği reddediyor; bunun nedeni genellikle tarayıcının çok fazla veya çok büyük çerez göndermesidir. - 444
No Response
nginx Standart dışı nginx kodu: sunucu hiçbir yanıt göndermeden bağlantıyı kapatır. İstemciler boş bir yanıt görür, hiçbir zaman 444 görmez. - 451
Unavailable For Legal Reasons
Erişim, mahkeme kararı veya resmi engelleme gibi yasal bir talep nedeniyle reddediliyor. Adını Ray Bradbury'nin Fahrenheit 451 romanından alır. - 499
Client Closed Request
nginx İstemci, sunucu yanıtını göndermeden önce bağlantıyı kapattığında nginx'in erişim loguna yazdığı standart dışı kod.
5xx Sunucu hatası
Sunucu, görünüşte geçerli bir isteği yerine getiremedi. Sürekli tekrarlanan 5xx hataları hem ziyaretçileri hem de tarama botlarını engeller.
- 500
Internal Server Error
Genel sunucu taraflı hata: sunucuda bir şeyler ters gitti; örneğin bir uygulama çöktü veya bir yapılandırma dosyası bozuk. - 501
Not Implemented
Sunucu, isteği yerine getirmek için gereken işlevi desteklemiyor; bu genellikle sunucunun tanımadığı bir HTTP metodudur. - 502
Bad Gateway
Bir ağ geçidi veya proxy, üst sunucudan geçersiz bir yanıt aldı; örneğin nginx'in arkasındaki uygulama çöktüğü için. - 503
Service Unavailable
Sunucu aşırı yük veya bakım nedeniyle isteği geçici olarak karşılayamıyor. Retry-After, ne zaman tekrar denenmesi gerektiğini belirtebilir. - 504
Gateway Timeout
Bir ağ geçidi veya proxy, üst sunucudan zamanında yanıt alamadı; bunun nedeni genellikle uygulamanın çok yavaş olmasıdır. - 505
HTTP Version Not Supported
Sunucu, istekte kullanılan ana HTTP sürümünü desteklemiyor veya desteklemeyi reddediyor. Bugün genellikle hatalı bir istek satırına işaret eder. - 506
Variant Also Negotiates
Şeffaf içerik müzakeresinde (RFC 2295) sunucu yapılandırma hatası: seçilen varyantın kendisi de müzakere ediliyor ve bu bir döngü oluşturuyor. - 507
Insufficient Storage
WebDAV: sunucu, isteği tamamlamak için gereken verileri saklayamıyor; örneğin bir disk veya kullanıcı kotası dolduğu için. - 508
Loop Detected
WebDAV: sunucu, sonsuz bir bağlama döngüsü bulduğu için Depth: infinity işlemini durdurdu. Yönlendirme döngüleriyle ilgisi yoktur. - 510
Not Extended
Artık kullanılmayan HTTP Extension Framework'ten (RFC 2774): istekte gerekli bir uzantı bildirimi eksik. Tarihsel bir koddur ve fiilen kullanılmaz. - 511
Network Authentication Required
Ağ (genellikle bir Wi-Fi giriş portalı) erişim vermeden önce oturum açılmasını istiyor. Kodu kaynak sunucular değil, trafiği yakalayan ağlar gönderir. - 520
Web Server Returned an Unknown Error
Cloudflare Cloudflare'e özgü: kaynak sunucu (origin) boş, bilinmeyen veya beklenmedik bir yanıt döndürdü; örneğin bir çökme veya sıfırlanan bağlantı sonrasında. - 521
Web Server Is Down
Cloudflare Cloudflare'e özgü: kaynak sunucu Cloudflare'in bağlantısını reddetti; genellikle web sunucusu kapalı olduğu veya Cloudflare'i engellediği için. - 522
Connection Timed Out
Cloudflare Cloudflare'e özgü: Cloudflare kaynak sunucuyla TCP bağlantısını zamanında kuramadı ya da kaynak sunucu isteği onaylamadı. - 523
Origin Is Unreachable
Cloudflare Cloudflare'e özgü: Cloudflare kaynak sunucuya hiç ulaşamıyor; genellikle bir ağ yönlendirme sorunu veya DNS'teki yanlış bir kaynak IP adresi nedeniyle. - 524
A Timeout Occurred
Cloudflare Cloudflare'e özgü: Cloudflare kaynak sunucuya bağlandı, ancak okuma zaman aşımı (varsayılan olarak yaklaşık iki dakika) dolmadan HTTP yanıtı alamadı. - 525
SSL Handshake Failed
Cloudflare Cloudflare'e özgü: Cloudflare ile kaynak sunucu arasındaki TLS el sıkışması başarısız oldu; örneğin kaynak sunucuda geçerli bir sertifika olmadığı için. - 526
Invalid SSL Certificate
Cloudflare Cloudflare'e özgü: Full (strict) modunda Cloudflare kaynak sunucunun sertifikasını doğrulayamadı; ör. süresi dolmuş, kendinden imzalı veya başka bir ada ait. - 530
Cloudflare 1xxx hatası
Cloudflare Cloudflare'e özgü: bir Cloudflare 1xxx hatasıyla birlikte gönderilir; örneğin 1016 (Origin DNS error) veya 1033 (Cloudflare Tunnel error).
HTTP durum kodu nasıl okunur
İlk hane yanıtın sınıfını, diğer iki hane ise o sınıf içindeki tam anlamı belirtir. Belirli bir kodu tanımayan istemci, onu kendi sınıfının x00 koduymuş gibi değerlendirir; yani bilinmeyen bir 4xx kodu 400 Bad Request gibi işlenir.
Sayının ardından gelen Not Found veya Moved Permanently gibi neden ifadesi (reason phrase), insanlar için yazılmış bir açıklamadan ibarettir. İstemciler yalnızca sayıya göre hareket eder; HTTP/2 ve HTTP/3 ise neden ifadesini hiç göndermez.
Yönlendirme durum kodlarına genel bakış
- 301 Moved Permanently: kalıcı; tarayıcılar POST isteğini GET'e çevirebilir. Taşınan sayfalar için varsayılan tercih.
- 302 Found: geçici; istek metodu değişebilir. Birçok framework'te varsayılan seçenek.
- 303 See Other: geçici; yeni adrese her zaman GET ile gidilir. Form gönderimlerinden sonra kullanılır.
- 307 Temporary Redirect: geçici; istek metodu ve gövdesi korunur.
- 308 Permanent Redirect: kalıcı; istek metodu ve gövdesi korunur.
- 304 Not Modified: başka bir URL'ye yönlendirme değildir; istemcinin önbellekteki kopyasının hâlâ geçerli olduğunu bildirir.
Hangi kodu ne zaman kullanmanız gerektiğini öğrenmek için HTTP yönlendirme durum kodları rehberimizi okuyun.
Yönlendirme zincirinde durum kodları
Yönlendirme zinciri (redirect chain), nihai bir yanıtla sona eren bir dizi 3xx yanıtıdır. Ziyaretçinin veya tarama botunun gerçekte aldığı yalnızca son durum kodudur. Bu yüzden 404 ile biten bir zincir, önceki yönlendirmeler ne kadar düzgün görünürse görünsün kırık bir bağlantıdır. Her adımın durum kodunu görmek için URL yönlendirme kontrolü aracını, çok sayıda URL'yi aynı anda kontrol etmek için Toplu yönlendirme kontrolü aracını kullanın.
URL yönlendirme kontrolü
Ücretsiz TrueURL yönlendirme kontrol aracıyla bir URL'nin döndürdüğü tüm durum kodlarını adım adım görün.