HTTP Durum Kodları Referansı

Yaygın HTTP durum kodlarının anlamı ve tipik kullanım yeri. Kodu, adı ya da anahtar kelimeyi yazarak ara. Tarayıcıda çalışır, arama dışarı gönderilmez.

Bu araç tarayıcınızda çalışır. Veriler dışarı çıkmaz.

  • 100Continue

    İstemci isteğin geri kalanını gönderebilir.

    Tipik: Expect: 100-continue ile büyük gövde upload.

  • 101Switching Protocols

    Sunucu protokol değişimini kabul etti.

    Tipik: HTTP → WebSocket geçişi.

  • 103Early Hints

    Ön ipuçları, son yanıttan önce.

    Tipik: CSS/JS için erken preload.

  • 200OK

    İstek başarılı.

    Tipik: Standart başarılı yanıt.

  • 201Created

    Yeni kaynak oluşturuldu.

    Tipik: POST sonrası, Location header ile.

  • 202Accepted

    İstek alındı, henüz tamamlanmadı.

    Tipik: Asenkron iş kuyruğa alma.

  • 204No Content

    Başarılı, gövde yok.

    Tipik: DELETE veya başarılı PUT.

  • 206Partial Content

    Sadece istenen byte aralığı döndü.

    Tipik: Video / büyük dosya range request.

  • 301Moved Permanently

    Kaynak kalıcı olarak taşındı.

    Tipik: Domain veya URL yapısı değişikliği.

  • 302Found

    Geçici yönlendirme.

    Tipik: Login sonrası geri yönlendirme.

  • 303See Other

    POST sonrası GET ile başka kaynağa yönlendir.

    Tipik: Form gönderim sonrası.

  • 304Not Modified

    Önbellek hâlâ taze.

    Tipik: ETag / If-None-Match doğrulamaları.

  • 307Temporary Redirect

    Geçici yönlendirme, metod korunur.

    Tipik: 302 alternatifi (yöntem-koruyan).

  • 308Permanent Redirect

    Kalıcı yönlendirme, metod korunur.

    Tipik: 301 alternatifi (yöntem-koruyan).

  • 400Bad Request

    Sunucu isteği anlayamadı.

    Tipik: Geçersiz JSON, eksik alan.

  • 401Unauthorized

    Kimlik doğrulanmadı.

    Tipik: Eksik / geçersiz token.

  • 403Forbidden

    Kimlik var, yetki yok.

    Tipik: Yetkisiz kaynak erişimi.

  • 404Not Found

    Kaynak yok.

    Tipik: Tipik yanlış URL.

  • 405Method Not Allowed

    HTTP metodu desteklenmiyor.

    Tipik: POST yerine GET veya tersi.

  • 409Conflict

    Durumla çakışma.

    Tipik: Eşzamanlı yazım, unique kısıtlaması.

  • 410Gone

    Kaynak kalıcı olarak silindi.

    Tipik: Eski endpoint deprecation.

  • 415Unsupported Media Type

    Content-Type desteklenmiyor.

    Tipik: Yanlış MIME, missing Content-Type.

  • 422Unprocessable Content

    Sözdizimi doğru ama anlam geçersiz.

    Tipik: Validation hataları (Laravel default).

  • 429Too Many Requests

    Hız limiti aşıldı.

    Tipik: Rate limiting (Retry-After).

  • 500Internal Server Error

    Sunucuda beklenmedik hata.

    Tipik: Yakalanmamış istisna.

  • 501Not Implemented

    Sunucu metodu tanımıyor.

    Tipik: Beta endpoint.

  • 502Bad Gateway

    Upstream geçersiz yanıt.

    Tipik: Nginx → PHP-FPM bağlantı sorunu.

  • 503Service Unavailable

    Sunucu geçici olarak müsait değil.

    Tipik: Bakım modu, aşırı yük.

  • 504Gateway Timeout

    Upstream zaman aşımına uğradı.

    Tipik: Yavaş query, donmuş worker.

Nasıl Çalışır

HTTP durum kodları üç haneli, ilk hane sınıfı belirtir:

  • 1xx — Informational: Sürüyor (nadiren görülür).
  • 2xx — Success: İstek başarılı.
  • 3xx — Redirection: İsteğin tamamlanması için istemcinin ek bir adım atması gerekir.
  • 4xx — Client Error: İstekte sorun var.
  • 5xx — Server Error: Sunucuda sorun var.

Sık karıştırılanlar

401 vs 403:

  • 401 Unauthorized — “kimliğini doğrulayamadım” (login gerek).
  • 403 Forbidden — “kimliğini biliyorum ama bu kaynağa yetkin yok”.

422 vs 400:

  • 400 Bad Request — istemci kaynaklı bir sorun var, en tipik hâli bozuk sözdizimi (örn. bozuk JSON).
  • 422 Unprocessable Content — syntax doğru ama anlam geçersiz (örn. e-posta alanında “abc”). Laravel, JSON/XHR isteklerinde default validation hatalarını 422 ile döndürür.

301 vs 308:

  • 301 Moved Permanently — kalıcı yönlendirme. Fetch Standard’ı izleyen güncel istemciler POST’u GET’e düşürür, yani metot korunmaz.
  • 308 Permanent Redirect — kalıcı yönlendirme, metodu korur. POST’u POST olarak yeniden yönlendirir.

502 vs 503 vs 504:

  • 502 Bad Gateway — upstream geçersiz yanıt verdi (örn. PHP-FPM crash).
  • 503 Service Unavailable — sunucu geçici olarak yanıt veremiyor (planlı bakım, aşırı yük).
  • 504 Gateway Timeout — upstream zaman aşımına uğradı (yavaş worker).

Idempotency

Bir metodun idempotent olması, aynı isteğin defalarca yapılmasının yan etkiyi değiştirmemesi anlamına gelir:

  • GET, PUT, DELETE, HEAD, OPTIONS — idempotent.
  • POST, PATCH — genelde idempotent değil.

Idempotent metotlar 5xx hatasından sonra otomatik retry edilebilir. Idempotent olmayanlar (örn. ödeme alma) retry için Idempotency-Key header’ı gibi mekanizmalar gerektirir.

Yaygın anti-pattern’ler

  • 200 OK ile hata döndürmek — {"error": "..."} formatında. REST istemcileri için kötü; durum kodunu kullanın.
  • 404 ile yetki hatası gizlemek — “bu kaynağın var olup olmadığını sızdırmak istemiyorum”. Çoğu durumda 403 veya 401 daha açık bir yanıt. RFC 9110 yetkisiz bir kaynağı gizlemek için 403 yerine 404 dönmeye izin veriyor; bunu alışkanlık değil, bilinçli bir tercih olarak yapın.
  • 500 her yerde — daha açıklayıcı kodlar var (422, 502, 503, 504). 500 sadece beklenmedik exception için.

Kaynaklar

Gizlilik

Bu statik bir referans. Arama kutusuna yazdığınız her şey tamamen tarayıcınızda çalışır ve dışarı çıkmaz — kutunun arkasında sunucu sorgusu yok.

Ara

Yazmaya başlayın. Notlar, sistem yazıları, günlük, araçlar ve sayfalar.

↑↓gez↵açesckapat