HTTP Durum Kodları (HTTP Status Codes), web sunucusunun bir istemciden (tarayıcı, uygulama vb.) gelen bir isteğe verdiği yanıtları tanımlar. Bu kodlar, isteğin başarılı olup olmadığını, neden başarısız olduğunu ve ne yapılması gerektiğini belirtir. HTTP yanıt kodları, genellikle üç hanelidir ve 5 ana kategoriye ayrılır:
1. 1xx: Bilgilendirme Kodları
Bu kodlar, sunucunun isteği aldı ve işlemi devam ettirdiğini gösterir. Genellikle istemciye daha fazla bilgi sağlar ve isteğin başarılı bir şekilde alındığı anlamına gelir.
- 100 Continue: İstemcinin gönderdiği başlıkların doğru olduğunu ve devam edebileceğini belirten bir yanıt.
- 101 Switching Protocols: İstemci, protokol değişikliği talep ettiğinde sunucunun bunu kabul ettiğini bildirir.
2. 2xx: Başarı Kodları
Bu kodlar, isteğin başarıyla tamamlandığını ve sunucunun istemcinin isteğine başarılı bir şekilde yanıt verdiğini belirtir.
- 200 OK: İstek başarılı ve sunucu yanıtı başarıyla sağlandı.
- 201 Created: Yeni bir kaynak başarıyla oluşturuldu (örneğin, yeni bir veritabanı kaydı).
- 202 Accepted: İstek başarıyla alındı, ancak henüz işlenmedi.
- 204 No Content: İstek başarıyla alındı, ancak dönecek içerik yok.
- 206 Partial Content: İstemci, belirli bir dosya parçasını (örneğin, video veya dosya) talep etti ve sunucu bu kısmı başarıyla sağladı.
3. 3xx: Yönlendirme Kodları
Bu kodlar, istemcinin talep ettiği kaynağın başka bir konumda olduğunu ve yönlendirilmesi gerektiğini belirtir.
- 301 Moved Permanently: Kaynak kalıcı olarak taşındı ve yeni URL sağlanır.
- 302 Found: Kaynak geçici olarak taşındı ve şu an için başka bir URL’ye yönlendirilmesi gerektiğini gösterir.
- 303 See Other: İstemciye yeni bir URL’den kaynak alınması gerektiğini bildirir.
- 304 Not Modified: Kaynak değişmedi, istemci mevcut önbelleği kullanabilir.
- 307 Temporary Redirect: Kaynak geçici olarak başka bir URL’de bulundu.
- 308 Permanent Redirect: Kaynak kalıcı olarak başka bir URL’ye taşındı.
4. 4xx: İstemci Hatası Kodları
Bu kodlar, istemcinin yaptığı istekte bir hata olduğunu belirtir. İstemci tarafından yapılması gereken değişiklikler olabilir.
- 400 Bad Request: Sunucu, geçerli olmayan veya hatalı bir isteği aldı.
- 401 Unauthorized: Erişim için kimlik doğrulama gereklidir. Kimlik doğrulama eksik veya yanlış.
- 403 Forbidden: Sunucu, isteği anlamasına rağmen işlemi reddediyor (yetkilendirme hatası).
- 404 Not Found: İstemcinin talep ettiği kaynak sunucuda bulunamadı.
- 405 Method Not Allowed: İstemci, desteklenmeyen bir HTTP metodunu (GET, POST, vb.) kullandı.
- 406 Not Acceptable: Sunucu, istemcinin kabul ettiği formatta bir yanıt veremiyor.
- 407 Proxy Authentication Required: Proxy sunucusu kimlik doğrulama gerektiriyor.
- 408 Request Timeout: İstemci, sunucuya belirli bir süre içinde yanıt göndermedi.
- 409 Conflict: İstek, mevcut kaynakla çelişiyor veya çakışıyor.
- 410 Gone: İstenilen kaynak kalıcı olarak silindi ve artık mevcut değil.
- 411 Length Required: İstek, Content-Length başlığını içermelidir.
- 412 Precondition Failed: İstek, belirli bir koşulu sağlayamadı.
- 413 Payload Too Large: İstek gövdesi, sunucunun işleyebileceği boyutu aşıyor.
- 414 URI Too Long: İstek URL’si çok uzun.
- 415 Unsupported Media Type: Sunucu, istemciden gelen medya türünü desteklemiyor.
- 416 Range Not Satisfiable: İstemci, talep edilen dosya parçasını sunucuda bulamadı.
- 417 Expectation Failed: İstemcinin beklediği durum gerçekleşmedi.
5. 5xx: Sunucu Hatası Kodları
Bu kodlar, sunucunun isteği işlerken bir hata oluştuğunu ve sunucunun istemciye geçerli bir yanıt veremediğini belirtir.
- 500 Internal Server Error: Sunucu, isteği işlerken bilinmeyen bir hata ile karşılaştı.
- 501 Not Implemented: Sunucu, isteği işlemek için gerekli olan işlevselliği desteklemiyor.
- 502 Bad Gateway: Sunucu, geçerli bir yanıt almak için başka bir sunucudan yanlış bir yanıt aldı.
- 503 Service Unavailable: Sunucu geçici olarak hizmet veremiyor (genellikle bakım veya yoğunluk nedeniyle).
- 504 Gateway Timeout: Sunucu, geçerli bir yanıt almak için diğer sunucudan zamanında yanıt alamadı.
- 505 HTTP Version Not Supported: Sunucu, istemciden gelen HTTP sürümünü desteklemiyor.