Menu

HTTP Durum Kodları

Her HTTP durum kodu için aranabilir referans ve sade açıklamalar.

Son güncelleme

  • 100Continue

    1xx

    İsteğin ilk kısmı alındı; istemci gövdeyi göndermeye devam etmelidir.

  • 101Switching Protocols

    1xx

    Sunucu protokol değiştirmeyi kabul etti (ör. HTTP/1.1'den WebSocket'e).

  • 102Processing

    1xx

    WebDAV — istek kabul edildi ama henüz tamamlanmadı.

  • 103Early Hints

    1xx

    Link başlığıyla birlikte kullanılır; istemcinin son yanıttan önce kaynak ön yüklemesi yapmasını sağlar.

  • 200OK

    2xx

    İstek başarılı oldu. Tam anlamı yönteme bağlıdır.

  • 201Created

    2xx

    İstek başarılı oldu ve yeni bir kaynak oluşturuldu.

  • 202Accepted

    2xx

    İstek işleme için kabul edildi ancak henüz tamamlanmadı (asenkron iş).

  • 203Non-Authoritative Information

    2xx

    Dönen meta veriler, kaynak sunucudan değil dönüştürücü bir vekilden gelmektedir.

  • 204No Content

    2xx

    İstek başarılı oldu ancak döndürülecek gövde yok.

  • 205Reset Content

    2xx

    İstemciye isteği gönderen belge görünümünü sıfırlamasını söyler (ör. formu temizle).

  • 206Partial Content

    2xx

    Range isteğine yanıt olarak kullanılır — gövde yalnızca istenen bayt aralığını içerir.

  • 300Multiple Choices

    3xx

    Kaynağın birden çok temsili var; istemci birini seçmelidir.

  • 301Moved Permanently

    3xx

    Kaynağın yeni kalıcı bir URL'si var. Arama motorları indekslerini günceller.

  • 302Found

    3xx

    Kaynak geçici olarak farklı bir URL'de. Yöntemi korumak gerekiyorsa 307 kullan.

  • 303See Other

    3xx

    Bir POST'tan sonra, sonucu GET ile almak için istemciyi yönlendirir (Post/Redirect/Get).

  • 304Not Modified

    3xx

    Önbelleğe alınan kopya hâlâ taze — koşullu GET'lere yanıt olarak gönderilir (ETag / If-Modified-Since).

  • 307Temporary Redirect

    3xx

    302 gibidir ancak yönlendirme takip edilirken istek yöntemi değiştirilmemelidir.

  • 308Permanent Redirect

    3xx

    301 gibidir ancak yönlendirme takip edilirken istek yöntemi değiştirilmemelidir.

  • 400Bad Request

    4xx

    Sunucu, istemci hatası nedeniyle isteği işleyemez veya işlemez (hatalı sözdizimi, geçersiz çerçeveleme).

  • 401Unauthorized

    4xx

    Kimlik doğrulama gerekiyor ve başarısız oldu veya sağlanmadı. (Adına rağmen, yetkilendirmeyle değil kimlik doğrulamayla ilgilidir.)

  • 402Payment Required

    4xx

    Gelecekte kullanım için ayrılmıştır. Bazı API'ler kullanıcının ücretli kotaya ulaştığını belirtmek için kullanır.

  • 403Forbidden

    4xx

    Sunucu isteği anladı ancak yetkilendirmeyi reddetti. Yeniden kimlik doğrulamak yardımcı olmaz.

  • 404Not Found

    4xx

    Sunucu istenen kaynağı bulamıyor.

  • 405Method Not Allowed

    4xx

    İstek yöntemi sunucu tarafından bilinir ancak hedef kaynak tarafından desteklenmez.

  • 406Not Acceptable

    4xx

    Sunucu, istemcinin gönderdiği Accept başlıklarıyla eşleşen bir yanıt üretemez.

  • 407Proxy Authentication Required

    4xx

    401 gibi ancak kimlik doğrulama bir vekil için gereklidir.

  • 408Request Timeout

    4xx

    Sunucu isteği beklerken zaman aşımına uğradı.

  • 409Conflict

    4xx

    İstek, hedef kaynağın mevcut durumuyla çelişir (ör. sürüm çakışması).

  • 410Gone

    4xx

    Kaynak kalıcı olarak silindi, yönlendirme adresi yok.

  • 411Length Required

    4xx

    Sunucu Content-Length başlığı gerektirir.

  • 412Precondition Failed

    4xx

    İstek başlıklarındaki bir ön koşul (ör. If-Match) sunucu tarafından karşılanmadı.

  • 413Payload Too Large

    4xx

    İstek gövdesi, sunucunun işlemeye razı olduğundan daha büyük.

  • 414URI Too Long

    4xx

    URI, sunucunun yorumlamaya razı olduğundan daha uzun.

  • 415Unsupported Media Type

    4xx

    İstek gövdesi, sunucu veya kaynağın desteklemediği bir medya türü kullanıyor.

  • 416Range Not Satisfiable

    4xx

    Range başlığı, dosyanın sınırları dışında bir bölüm istiyor.

  • 418I'm a teapot

    4xx

    RFC 2324'ten bir 1 Nisan şakası. Kahve yapmayı reddeden sunucular tarafından döndürülür.

  • 421Misdirected Request

    4xx

    İstek, yanıt üretemeyen bir sunucuya gönderildi (ör. yanlış HTTP/2 bağlantısı).

  • 422Unprocessable Entity

    4xx

    İstek iyi biçimlendirilmiş ancak anlamsal hatalar içeriyor (API'ler genellikle doğrulama hataları için kullanır).

  • 423Locked

    4xx

    WebDAV — erişilen kaynak kilitli.

  • 425Too Early

    4xx

    Sunucu, tekrarlanabilecek bir isteği işlemek istemiyor.

  • 426Upgrade Required

    4xx

    İstemci, isteği tamamlamak için farklı bir protokole (ör. TLS) yükseltmelidir.

  • 428Precondition Required

    4xx

    Sunucu isteğin koşullu olmasını gerektirir (kayıp güncelleme sorununu önlemeye yardımcı olur).

  • 429Too Many Requests

    4xx

    İstemci belirli bir sürede çok fazla istek gönderdi (hız sınırlaması).

  • 431Request Header Fields Too Large

    4xx

    Sunucu, bir başlık alanı — veya başlıkların toplamı — çok büyük olduğu için isteği reddediyor.

  • 451Unavailable For Legal Reasons

    4xx

    Kaynak yasal nedenlerle kullanılamıyor (Fahrenheit 451'den esinlenmiştir).

  • 500Internal Server Error

    5xx

    Sunucu beklenmeyen bir durumla karşılaştı. Genel 5xx hatası.

  • 501Not Implemented

    5xx

    Sunucu istek yöntemini tanımıyor.

  • 502Bad Gateway

    5xx

    Sunucu, ağ geçidi olarak çalışırken üst sunucudan geçersiz bir yanıt aldı.

  • 503Service Unavailable

    5xx

    Sunucu isteği işlemeye hazır değil — genellikle aşırı yüklenmiş veya bakımda.

  • 504Gateway Timeout

    5xx

    Sunucu, ağ geçidi olarak çalışırken üst sunucudan zamanında yanıt alamadı.

  • 505HTTP Version Not Supported

    5xx

    Sunucu, istekte kullanılan HTTP sürümünü desteklemiyor.

  • 507Insufficient Storage

    5xx

    WebDAV — sunucu, isteği tamamlamak için gereken temsili depolayamıyor.

  • 508Loop Detected

    5xx

    WebDAV — sunucu işleme sırasında sonsuz bir döngü tespit etti.

  • 511Network Authentication Required

    5xx

    İstemcinin ağ erişimi için kimlik doğrulaması yapması gerekir (kapalı portallar).

HTTP durum kodları nedir?

HTTP durum kodları, sunucunun her yanıtın başında döndürdüğü ve ne olduğunu özetleyen üç haneli sayılardır. Tarayıcılar, istemciler, proxy'ler ve CDN'ler; cache'leyip cache'lememe, yönlendirme yapma, yeniden deneme veya kullanıcıya hata gösterme kararını bu kodlara bakarak verir.

Her durum kodu, ilk hanesine göre beş sınıftan birine düşer: 1xx bilgilendirme, 2xx başarı, 3xx yönlendirme, 4xx istemci hatası, 5xx sunucu hatası. Sınıfı bildiğinde, spesifik kodu aramadan bile kabaca anlamını kestirebilirsin.

Çoğu uygulama aslında küçük bir çekirdek kümeyi kullanır (200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503). Her birinin *ne anlama geldiğini* — 401 Unauthorized ile 403 Forbidden ya da 301 Moved Permanently ile 302 Found arasındaki farkı — bilmek seni daha sağlam bir backend veya API geliştiricisi yapar.

Bu referansı kullanırken öğreneceklerin

  • İlk hane sana her zaman sınıfı söyler: 1xx bilgi, 2xx başarı, 3xx yönlendirme, 4xx istemci hatası, 5xx sunucu hatası.
  • Durum kodları bir API'nin sunduğu *sözleşmenin parçasıdır* — istemciler bunlara göre dallanmalı, gövdedeki hata mesajını parse etmeye çalışmamalıdır.
  • 4xx, istemcinin bir şeyi yanlış yaptığı anlamına gelir (hatalı girdi, eksik kimlik doğrulama, bulunmayan kaynak). 5xx ise istemci ne yaparsa yapsın sunucunun başarısız olduğunu söyler.

Durum kodu referansını adım adım nasıl kullanırsın

  1. Kod veya isimle ara

    Bir sayı (404, 429) ya da anahtar kelime (auth, redirect, rate limit) yaz; eşleşen kodlar anlık olarak filtrelenir.

  2. Sınıfa göre filtrele

    Aradığın net bir kod yoksa ve keşfetmek istiyorsan, sınıf çiplerini (1xx, 2xx, 3xx, 4xx, 5xx) kullanarak listeyi daralt.

  3. Sade dilli açıklamayı oku

    Her kayıt; kodun ne zaman gönderildiğini, tipik istemci davranışını ve en sık karşılaşılan nedeni içerir.

  4. Benzer kodları karşılaştır

    Karıştırılan çiftler arasındaki çapraz bağlantıları (401 vs 403, 301 vs 302) kullanarak API'n için doğru olanı seç.

HTTP durum kodu sınıfları

HTTP durum kodlarının beş sınıfı ve bir bakışta ne anlama geldikleri. RFC 9110 tarafından tanımlanır ve IANA HTTP Status Code Registry üzerinde kayıtlıdır.

SınıfAnlamıYaygın kodlar
1xx Bilgilendirmeİstek alındı, işleniyor100, 101, 103
2xx Başarıİstek başarıyla tamamlandı200, 201, 204, 206
3xx YönlendirmeBaşka bir yere bak301, 302, 304, 307, 308
4xx İstemci hatasıİstekte bir sorun var400, 401, 403, 404, 409, 422, 429
5xx Sunucu hatasıSunucu, geçerli bir isteği karşılayamadı500, 502, 503, 504

Bilmen gereken yaygın HTTP durum kodları

200 OK vs 201 Created vs 204 No Content

200 OK

Standart "her şey yolunda gitti" yanıtı; gövdesiyle birlikte döner.

201 Created

İstek sonucunda yeni bir kaynak oluşturuldu — genellikle bir POST sonrasında döner.

204 No Content

Başarılı, ama gövdesiz. Veri döndürmesi gerekmeyen DELETE veya PUT çağrılarından sonra yaygındır.

Üçü de başarı kodu — fark, yanıtın ne taşıdığında. 201, yeni kaynağın adresini gösteren bir Location header'ı içermeli; 204 ise tanımı gereği boştur.

301 Moved Permanently vs 302 Found

301

Kalıcı yönlendirme. Tarayıcılar ve arama motorları bunu hatırlar; eski URL fiilen ölmüş demektir.

302

Geçici yönlendirme. Tarayıcılar her istekte orijinal URL'yi yeniden kontrol eder; yer imleri eski URL'de kalır.

Bir kaynağı gerçekten taşıdıysan (rebrand, URL yeniden yapılanması) 301 kullan. A/B testleri, giriş yönlendirmeleri veya bakım sayfaları gibi kısa ömürlü durumlar için 302 daha uygundur.

401 Unauthorized vs 403 Forbidden

401

Kimlik doğrulaman yok. Sunucu kim olduğunu bilmiyor.

403

Sunucu kim olduğunu biliyor ama bu kaynak için yetkin yok.

Farklı kimlik bilgileri göndermek sorunu çözebilecekse 401 döndür. Hangi kimlik bilgisi gönderilirse gönderilsin işe yaramayacaksa (kaynak bu kullanıcıya zaten yasak) 403 döndür.

500 vs 502 vs 503 vs 504

500

Genel sunucu hatası — kodun yakalanmamış bir exception fırlattı.

502

Bad gateway — öndeki bir proxy (CDN, load balancer) upstream sunucuya ulaşamadı.

503

Service unavailable — sunucu ayakta ama aşırı yüklü ya da bakım modunda.

504

Gateway timeout — proxy upstream'e ulaştı ama zamanında yanıt alamadı.

Dördü de sunucu hatası ama hata ayıklayan kişiye çok farklı hikâyeler anlatırlar. 500 senin uygulaman; 502 ve 504 ağ yolunu işaret eder; 503 ise kapasiteye işaret eder.

Yaygın HTTP durum kodu hataları

  • Gövdede {"error": "..."} ile birlikte 200 OK döndürmek. Durum kodları sözleşmenin parçasıdır — istemciler dallanabilsin diye doğrusunu kullan (400, 404, 500).
  • İzin hataları için 401 kullanmak. 401 kimlik doğrulama içindir; izin reddi 403 olmalı.
  • Yeni oluşturulan kaynaklar için Location header'lı 201 yerine 200 döndürmek.

HTTP Durum Kodu SSS

HTTP 404 ne demek?
404 Not Found, sunucunun isteği anladığı ama o URL'deki kaynağın mevcut olmadığı anlamına gelir. Genellikle yol yanlıştır, kaynak silinmiştir veya URL yanlış yazılmıştır.
401 ile 403 arasındaki fark nedir?
401 Unauthorized, kimlik doğrulaman olmadığı anlamına gelir — sunucu kim olduğunu bilmiyor. 403 Forbidden ise kimliğin doğrulanmış ama bu kaynak için yetkin olmadığı anlamına gelir. Farklı kimlik bilgileri göndermek 401'i çözebilir; 403'ü çözmez.
301 ile 302 arasındaki fark nedir?
301 Moved Permanently kalıcı bir yönlendirmedir — tarayıcılar ve arama motorları kayıtlarını günceller. 302 Found ise geçici bir yönlendirmedir — istemciler orijinal URL'yi ziyaret etmeye devam eder. Kalıcı taşımalar için 301, geçici sapmalar için 302 kullan.
HTTP 500 ne demek?
500 Internal Server Error, genel bir sunucu tarafı hatasıdır; genellikle yakalanmamış bir exception yukarı kabardığında fırlatılır. İstemci yanlış bir şey yapmadı — sunucun geçerli bir isteği işleyemedi.
Her zaman spesifik bir durum kodu mu kullanmalıyım?
Evet. Hatalar için genel 200 OK ya da her şey için 500 döndürmek API'leri kullanmayı zorlaştırır. Duruma en iyi uyan en spesifik kodu seç — istemciler, proxy'ler, monitörler ve retry mantığı hep durum koduna göre dallanır.
HTTP 429 ne demek?
429 Too Many Requests, bir istemci rate limit'e takıldığında gönderilir. Yanıt, istemciye ne zaman tekrar deneyebileceğini söyleyen bir Retry-After header'ı içermelidir.

Daha fazla bilgi

Diğer geliştirici araçları

Coddy ile kodlamayı öğren

BAŞLA