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.
- 100 Continue
İstemci isteğin geri kalanını gönderebilir.
Tipik: Expect: 100-continue ile büyük gövde upload.
- 101 Switching Protocols
Sunucu protokol değişimini kabul etti.
Tipik: HTTP → WebSocket geçişi.
- 103 Early Hints
Ön ipuçları, son yanıttan önce.
Tipik: CSS/JS için erken preload.
- 200 OK
İstek başarılı.
Tipik: Standart başarılı yanıt.
- 201 Created
Yeni kaynak oluşturuldu.
Tipik: POST sonrası, Location header ile.
- 202 Accepted
İstek alındı, henüz tamamlanmadı.
Tipik: Asenkron iş kuyruğa alma.
- 204 No Content
Başarılı, gövde yok.
Tipik: DELETE veya başarılı PUT.
- 206 Partial Content
Sadece istenen byte aralığı döndü.
Tipik: Video / büyük dosya range request.
- 301 Moved Permanently
Kaynak kalıcı olarak taşındı.
Tipik: Domain veya URL yapısı değişikliği.
- 302 Found
Geçici yönlendirme.
Tipik: Login sonrası geri yönlendirme.
- 303 See Other
POST sonrası GET ile başka kaynağa yönlendir.
Tipik: Form gönderim sonrası.
- 304 Not Modified
Önbellek hâlâ taze.
Tipik: ETag / If-None-Match doğrulamaları.
- 307 Temporary Redirect
Geçici yönlendirme, metod korunur.
Tipik: 302 alternatifi (yöntem-koruyan).
- 308 Permanent Redirect
Kalıcı yönlendirme, metod korunur.
Tipik: 301 alternatifi (yöntem-koruyan).
- 400 Bad Request
Sunucu isteği anlayamadı.
Tipik: Geçersiz JSON, eksik alan.
- 401 Unauthorized
Kimlik doğrulanmadı.
Tipik: Eksik / geçersiz token.
- 403 Forbidden
Kimlik var, yetki yok.
Tipik: Yetkisiz kaynak erişimi.
- 404 Not Found
Kaynak yok.
Tipik: Tipik yanlış URL.
- 405 Method Not Allowed
HTTP metodu desteklenmiyor.
Tipik: POST yerine GET veya tersi.
- 409 Conflict
Durumla çakışma.
Tipik: Eşzamanlı yazım, unique kısıtlaması.
- 410 Gone
Kaynak kalıcı olarak silindi.
Tipik: Eski endpoint deprecation.
- 415 Unsupported Media Type
Content-Type desteklenmiyor.
Tipik: Yanlış MIME, missing Content-Type.
- 422 Unprocessable Content
Sözdizimi doğru ama anlam geçersiz.
Tipik: Validation hataları (Laravel default).
- 429 Too Many Requests
Hız limiti aşıldı.
Tipik: Rate limiting (Retry-After).
- 500 Internal Server Error
Sunucuda beklenmedik hata.
Tipik: Yakalanmamış istisna.
- 501 Not Implemented
Sunucu metodu tanımıyor.
Tipik: Beta endpoint.
- 502 Bad Gateway
Upstream geçersiz yanıt.
Tipik: Nginx → PHP-FPM bağlantı sorunu.
- 503 Service Unavailable
Sunucu geçici olarak müsait değil.
Tipik: Bakım modu, aşırı yük.
- 504 Gateway 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.