HTTP Status Codes Reference
En sık kullanılan HTTP durum kodları ve anlamları. Aranabilir.
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 OKile hata döndürmek —{"error": "..."}formatında. REST istemcileri için kötü; durum kodunu kullanın.404ile 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.500her yerde — daha açıklayıcı kodlar var (422, 502, 503, 504). 500 sadece beklenmedik exception için.
Kaynaklar
- RFC 9110 — HTTP semantics.
- MDN HTTP Status Codes.
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.