---
title: "HTTP Durum Kodları Referansı"
description: "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."
url: https://sade.dev/tr/tools/http-status/
lang: tr
author: "Muhammet Şafak"
published: 2026-04-08
updated: 2026-08-30
section: Tool
tags: ["http","reference"]
---

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

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