---
title: "HTTP Durum Kodları Referansı"
description: "En sık kullanılan HTTP durum kodları ve anlamları. Aranabilir."
url: https://sade.dev/tr/tools/http-status/
lang: tr
author: "Muhammet Şafak"
published: 2026-04-08
updated: 2026-09-06
section: Tool
tags: ["http","reference"]
---

# HTTP Durum Kodları Referansı

> En sık kullanılan HTTP durum kodları ve anlamları. Aranabilir.

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

- [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110) — HTTP semantics.
- [MDN HTTP Status Codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status).

## 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.

## Durum kodları

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