HTTP Durum Kodları

Hiçbir web sitesini ziyaret etmeyi denediniz ve 404 kodlu “Sayfa Bulunamadı” uyarısı veya “500 Internal server error” mesajı aldınız mı? Bu kodun ne anlama geldiği ve çevrimiçi olarak karşılaşabileceğiniz diğer yaygın HTTP Durum Kodları hakkında daha fazla bilgi edinmek istiyorsanız, bu yazı tam size göre!

Bir web sitesi veya uygulamayla her etkileşimde bulunduğunuzda, sunucusuna bir istek gönderirsiniz. Sunucu daha sonra talep ettiğiniz bilgilerle veya bir hatayla yanıt verecektir. Bu bilgi bir HTTP (Köprü Metni Aktarım Protokolü) Durum Kodu içerecektir.

HTTP Durum Kodu, bir tarayıcıdan gelen bir isteğe 3 basamaklı bir tam sayı içeren bir sunucu yanıtıdır. Örneğin, bu özel makaleye geldiğinizde, tarayıcınız sunucuya bu sayfaya erişmesi için bir istek gönderdi ve sunucu, 200 HTTP durum koduyla yanıt verdi.

Bu 3 haneli durum kodları, web sitenizin veya uygulamanızın teknik sağlığında önemli bir rol oynarken hem kullanıcıların hem de arama motorlarının sitenize erişmesine ve sitenizi anlamasına yardımcı olur.

İnternet Tahsisli Numaralar Kurumu (IANA), HTTP yanıt kodlarının kaydını tutmaktan sorumlu kuruluştur. Kodları tanımlarlar ve bunların internette tutarlı bir şekilde kullanılmasını sağlarlar. Bizler bu yazımızda 1XX, 2XX, 3XX, 4XX ve 5XX olarak 5’e ayrılan hataları inceleyeceğiz.

Peki, HTTP Durum Kodları Neden Önemli?

HTTP Durum Kodları, çevrimiçi etkileşimin nasıl çalıştığının önemli bir parçasıdır. Hepsi iletişimle ilgilidir ve istek-yanıt döngüsü için gereklidir.

Örnek vermek gerekirse bir web sitesini ziyaret ettiğinizde iki önemli başrol vardır: bir istemci ve bir web sunucusu. İstemci, web tarayıcınızdır, sunucu ise uzak / yerel bir sunucuda barındırılan web sitesidir.

Bir web sayfası yüklediğinizde, web sitesindeki her öğe, isteğinize yanıt olarak sunucu tarafından sunulur. Bu yanıtın bir kısmı bir durum kodu içerecektir. Hatta siz bunları tarayıcınızın geliştirici konsolunun ağ panelinde görselleştirebilirsiniz.

Örneğin, yukarıdaki resimde, IANA Protokol Kayıtları sayfasında yüklenen her öğe için bir HTTP Durum Kodu (200 OK) görebilirsiniz.

Durum kodları, bir istekle ilgili herhangi bir sorun olup olmadığını size bildirir. Durum kodlarının kullanışlılığı sandığınızdan çok daha fazlasına ulaşabilir. Örneğin, Google Search Console’da sorun veya hatalarla bildirilen URL’ler bulabilirsiniz. Google, döndürülen durum koduna göre bu hataları tanımlar.

HTTP İstek Yöntemleri

HTTP, bir kaynak için istenen eylemi belirtmek için istek yöntemlerini tanımlar.

İşte 9 önemli istek yöntemi:

  • GET, belirli bir kaynaktan veri alır.
  • HEAD, yanıtın gövdesini döndürmeden belirli bir kaynaktan veri alır.
  • POST, yeni bir kaynak oluşturmak için verileri bir sunucuya gönderir.
  • PUT, mevcut bir kaynağı yeni verilerle günceller.
  • DELETE belirtilen bir kaynağı kaldırır.
  • OPTIONS, sunucunun desteklediği HTTP yöntemlerini alır.
  • TRACE, istek mesajını sunucuya giden ağ yolu boyunca izler.
  • PATCH, bir kaynağa kısmi değişiklikler uygular. 

Hatırlatma: Ancak kullanılan API’lere göre de farklı istek ve cevap yöntemleri bulunmaktadır. Bunlar Api özeline göre değişebilir.

HTTP Durum Kodu Grupları

Yukarıda belirtildiği gibi, durum kodları, 3 numaralı koddaki ilk sayı ile belirtilen 5 kategoriden birine girer. 

Sunucuya bir HTTP isteği yapıldığında HTTP Durum Kodu döndürülür. Sunucu, isteğinize yanıt olarak bir HTTP Durum Kodu döndürür.

  • 1xx – Informational: Sunucu isteği işliyor 
  • 2xx – Success: İsteğin başarılı olduğunu, alındığını, anlaşıldığını ve kabul edildiğini gösterir
  • 3xx – Redirection: Yeniden yönlendirmenin gerekli olduğunu gösterir
  • 4xx – Client Error: İstemcinin/kullanıcının hata yaptığı durumları gösterir
  • 5xx – Server Error: Bir sunucu hatasını gösterir

İşte HTTP durum kodlarının tam listesi.

1XX Informational

  • 100 Continue -Devam

Sunucu, isteğin ilk bölümünü aldı ve tüm içeriği işledikten sonra son bir yanıt gönderecek.

  • 101 Switching Protocols – Anahtarlama Protokolü

Sunucu, uygulama protokolünü değiştirme talebini anlar ve uygunsa buna uyar.

  • 102 Processing -İşleme

Sunucu tam istek aldı ve işliyor, tamamlamadığı için henüz yanıt verilmez.

  • 103 Early Hints – Erken İpuçları

Sunucu bir yanıt hazırlarken tarayıcının kaynakları önceden yüklemesine izin vermek için Link başlığıyla birlikte kullanılır.

2XX – Success Response

  • 200 Ok- Tamam

GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE gibi istek yöntemine göre başarılı HTTP istekleri için gönderilen standart HTTP yanıtıdır. Başka bir şekilde, istenen içerik başarıyla sunulduğunda web sunucusu 200 döndürür.

200 Durum Kodu bizim dostumuzdur. Sayfanız olması gerektiği gibi çalıştığından, onlara eriştiğimizde hem kullanıcıların hem de arama motorlarının görmeyi beklediği HTML Kodudur. Arama Motorları bunu eğer uygun şekilde optimize edilmişse “gerçek” bir sayfa olarak görür.

  • 201 Accepted- Oluşturuldu

Sunucu, Konum başlığı veya hedef URI tarafından tanımlanan bir veya daha fazla işleme talebini kabul etti. Ancak henüz işleme koymaz.

  • 203 Non-authoritative Information- Yetkili Olmayan Bilgi

İsteği başarılı oldu, ancak proxy dönüştürülürken tarayıcıya gönderilmeden önce bilgiler değiştiğinde bu hatayı verir.

  • 204 No Content -Hiçbir İçerik

Sunucusu isteği tamamlamadı ancak yanıt olarak gönderilecek ek bir içerik bilgisi bulunmamadı.

  • 205 Reset Content- İçerik Sunucusunu Sıfırla

Kullanıcı isteği yerine getirdi ve kullanıcının belge görünümünü orijinal durumuna sıfırlaması gerekiyor.

  • 206 Partial Content Server, Kısmi İçerik Sunucusu

Sunucu, istemci tarafından gönderilen bir aralık üstbilgisi nedeniyle kaynağın yalnızca bir kısmını göndermektedir. Wget gibi bir müşteri tarafından gönderilen range başlığı nedeniyle yalnızca kısmi içerik teslim edilir.

  • 207 Multi-Status Conveys- Çoklu Durum Başarı/Kısmen/Başarısızlık

Bu gibi durumlarda kullanılan birden çok kaynağın durumunu, çok durumlu kök öğeli HTTP varlığını iletir.

  • 208 Already Reported- Zaten Bildirildi

Sunucuya iletilen talebin, bir önceki cevabın sayısında numaralandırıldığını ve bir daha eklenmediğini belirtmek için kullanılır.

  • 226 IM Used Server -IM Kullanılan Sunucu

Kaynak talebini mesajın gövdesinde ve talebin ön koşulunu uyguladıktan sonra sonucun bir temsilinde döndürerek yerine getirdi.

3XX –  Redirection Response

  • 300 Multiple Choices – Çoktan Seçmeli

Sunucu, istemcinin seçebileceği kaynak için birden çok seçeneğe sahiptir.

  • 301 Moved Permanently- Kalıcı Olarak Taşındı

Kaynak kalıcı olarak yeni URI’ye taşındı, gelecekteki referanslar yeni URI kullanmalıdır. İstediğiniz sayfa kalıcı olarak yeni bir konuma taşındı. Bu, bir arama motoru botuna yeni bir konumu taraması talimatını verir.

Talebiniz farklı bir lokasyondan sunuluyor, ancak bu geçici bir düzenleme. Bu, arama motoru botuna orijinal konumu taraması talimatını verir.

İsteğe verilen yanıt başka bir URI’de bulunabilir, yeni URI, orijinal URI’nin yerini alacak bir referans değildir.

301 durum kodları, tarayıcıya veya tarayıcıya bu sayfanın kalıcı olarak yeni bir konuma taşındığını bildirir. Düzgün çalıştırıldığında, arama motorları “eski” sayfanın yerini “yeni” sayfanın aldığını anlamalıdır. 301 yönlendirmeleri, eski sayfanın eskiden sahip olduğu bağlantı değerinin ve yetkisinin çoğunu yeni sayfaya aktarır.

Bunları genellikle geçişler sırasında, URL’ler değiştiğinde, sayfalar güncellendiğinde ve yeni konumlara taşındığında, alan adları değiştirildiğinde vb. görürüz.

Bu durum kodları, bir sayfa bir zincir veya döngü aracılığıyla yeniden yönlendirilmedikçe veya sayfa yanlışlıkla yeniden yönlendirilmedikçe nadiren “kötü” olur.

  • 302 Found – Bulundu

Kaynak geçici olarak yeni URI’ye taşındı, gelecekteki referanslar orijinal URI’yi kullanmalıdır.

302 durum kodları, tarayıcıya veya gezgine bu sayfanın kalıcı yerine geçici olarak yeni bir konuma taşındığını bildirdiği için 301 durum kodlarına çok benzer. Düzgün yürütüldüğünde, arama motorları eski sayfanın geçici olarak kullanılamadığını anlamalıdır. Google, bu yönlendirmelerin bağlantı eşitliğini ilettiğini belirtmesine rağmen, tarihsel olarak bağlantı eşitliğini ve otoritesini aktarmadıkları bilinmektedir.

Bunları genellikle bir sayfa güncellenirken görürüz, ancak kısa bir süre sonra yeniden yayınlanacaktır.

Bu durum kodları, sayfa gerçekten yalnızca geçici olarak kullanılamadığı sürece uygundur. Sayfa kalıcı olarak yeni bir konumda kalacaksa, bağlantı değerini ve yetkisini eski sayfadan yeni sayfaya iletmek için her zaman bir 301 yönlendirmesi önerilir.

  • 304 Not Modified – Değiştirilmemiş

Kaynak, son talepten bu yana değiştirilmedi, kaynağın önbelleğe alınmış kopyasını kullanabilir. Genellikle, bir kaynak değiştirilmeden önbelleğe alınan sayfa sunulduğunda.

  • 305 Use Proxy – Proxy kullan

İstenen kaynak yalnızca bir proxy aracılığıyla kullanılabilir. Bu, istenen sayfayı başarıyla almak için ilgili bir proxy kullanmanız gerektiği anlamına gelir.

Kaynağa erişmek için bir proxy kullanılmalıdır, proxy’nin konumu yanıtta sağlanır.

  • 306 Switch Proxy- Anahtar Proxy

Artık kullanılmıyor, orijinal olarak Proxy’yi değiştirmek için kullanılıyor

  • 307 Temporary Redirect – Geçici Yönlendirme

Kaynak geçici olarak yeni URI’ye taşındı, gelecekteki referanslar orijinal URI’yi kullanmalıdır.

  • 308 Permanent Redirect – Kalıcı Yönlendirme

Kaynak kalıcı olarak yeni URI’ye taşındı, gelecekteki referanslar yeni URI kullanmalıdır.

Client Error – Müşteri Hatası

  • 400 Bad request – Hatalı istek:

Sunucunun ne istediğiniz konusunda kafası karışık. Muhtemelen hatalı sözdizimi veya URI’ye sunucunun anlamadığı karakterleri eklemeye çalışıyor.

Hatalı sözdizimi nedeniyle istek sunucu tarafından anlaşılamadı

  • 401 Not Authorized – Yetkili değil:

İstenen sayfa korunuyor ve kimlik doğrulama gerektiriyor. İstenen sayfayı başarıyla almak için giriş yapmalısınız. Kaynağa erişmek için kullanıcı kimlik doğrulaması gerektirir.

  • 402 Payment Required- Ödeme Gerekli

İleride kullanılmak üzere ayrılmıştır, şu anda kullanılmamaktadır.

  • 403 Forbidden – Yasak

İsteği anlıyor ancak yetkilendirmeyi reddediyor.  403 durum kodu, kullanıcıları ve botları sayfanın kendileri için tasarlanmadığı ve sayfaya erişmelerinin “yasaklandığı” konusunda uyarır.

Bu hata kodunu genellikle web sitenin parola korumalı bir bölümüne veya arama motorları ve kullanıcıların erişimine kapalı olması amaçlanan bir sayfaya erişmeye çalışırken görürüz.

403 hata kodu, arama motorlarına ve kullanıcılara sunulması amaçlanan kaynaklarda gösterilmemelidir.

Kısacası izniniz olmayan yerlere girmeye çalışmamalısınız. Bu gerekli olmayan kaynak parola ile korunmaktadır; dosya/klasör izni istenen sayfanın görüntülenmesine izin vermediğinde de hata alırsınız

  • 404 Not Found – Bulunamadı

Hatalardan en bilineni “aradığınız sayfa sunucuda bulunamadı.” Hatasıdır. Olmayan bir şeye erişmeye çalışıyorsunuz. 404 durum kodu, sunucunun istenen sayfayı bulamadığını gösterir.

Bir sayfa olmadığında veya kaldırıldığında veya link değiştiğinde bu hatayı alırız.

Bir sayfa 404’e hizmet ediyorsa ve organik trafik veya dönüşüm sağlıyorsa, anahtar kelimeler için sıralanırsa ve/veya kaliteli geri bağlantılara sahipse. 404 yerine, bu sayfa 301 yönlendirmesi yapmalıdır, böylece değer yeni, alakalı bir sayfaya aktarılabilir ve sizlerde ziyaretçi kaybetmiş olmazsınız.

  • 405 Method Not Allowed Request- Yönteme İzin Verilmiyor

İstek yöntemi kaynak tarafından desteklenmiyor.

  • 406 Not Acceptable Resource- Kabul Edilemez Kaynak

 Yalnızca Kabul başlıklarına göre kabul edilemez yanıtlar üretebilir.

  • 405 Method Not Allowed Request – Yönteme izin verilmiyor

 Yanlış yöntemle bir sayfa talep ediyorsunuz. Örneğin, POST verileri üzerinde GET yapıyorsunuz. Veya devre dışı bırakılan yöntemi deniyorsunuz, örneğin – TRACE, PUT, DELETE.

  • 407 Proxy Authentication Required – Proxy Kimlik Doğrulaması

Gerekli İstemcinin kaynağa erişmek için proxy ile kimliğini doğrulaması gerekir.

  • 408 Request Timeout- İstek Zaman Aşımı

Sunucusu işlemek için tam isteği zamanında almadı.

  • 409 Conflict Çakışma İsteği,

Mevcut kaynak durumuyla bir çakışma nedeniyle tamamlanamadı.

  • 410 Gone ­- Sayfa Artık Mevcut Değil

Resource artık mevcut değil ve muhtemelen kalıcı. 410 durum kodları, 404 durum kodlarına çok benzer, ancak bir zamanlar var olan ancak artık olmayan sayfaları için hazırlanmıştır. 410’lar genellikle bir sitedeki içeriği budarken veya hiçbir organik değeri olmayan eski bir kaynağı kaldırırken kullanılır.

Bir zamanlar var olan bir sayfa kaldırıldığında ve hiçbir organik değeri kalmadığında bu değeri verse de kimse bunu düzenlemediği için genelde 404 hatası veriyor. Çalışma yapılan sayfa hiç var olmadıysa veya organik trafik veya dönüşüm sağlıyorsa, anahtar kelimeler için sıralanıyorsa ve/veya kaliteli geri bağlantıları varsa. Değerin yeni, alakalı bir sayfaya aktarılabilmesi için bu sayfa 301 yönlendirmesi yapmalıdır.

  • 411 Length Required – Uzunluk Gerekli İstek

Kaynağın gerektirdiği içeriğin uzunluğunu belirtmedi.

  • 412 Precondition Failed -Önkoşul Başarısız Sunucu

 İstekte bulunanın istekte belirttiği ön koşullardan birini karşılamıyor.

  • 408 – Request timeout- İstek zaman aşımı:

Sunucu isteği beklerken zaman aşımına uğradı

  • 411 – Length required – Gerekli uzunluk:

İsteğiniz, istenen kaynağın gerektirdiği içeriğin uzunluğunu karşılamıyor.

  • 413 Payload Too Large -Yük Çok Büyük

İstek, sunucunun işleyebileceğinden daha büyük.

  • 414 URI Too Long – URI Çok Uzun

İstek URI’si, sunucunun işlemesi için çok uzun.

  • 415 Unsupported Media -Desteklenmeyen Ortam Türü

İstek gövdesi, sunucunun desteklemediği bir biçimde.

  • 416 Range Not Satisfiable -Aralık Tatmin Edilemez

Sunucu, Range başlığında istenen kaynak bölümünü sağlayamıyor.

  • 417 Expectation Failed -Beklenti Başarısız

Sunucu, Beklenti isteği başlığının gereksinimlerini karşılayamıyor.

  • 418 I’m a Teapot- Ben Bir Çaydanlığım

418 yalnızca bir Paskalya Yumurtası için kullanılmıştır. “Bu kod, 1998’de RFC 2324, Hyper Text Coffee Pot Control Protocol‘ünde geleneksel IETF 1 Nisan şakalarından biri olarak tanımlandı ve gerçek HTTP sunucuları tarafından uygulanması beklenmiyor.” Belgeye göre eğer bir cihaz bir kahve makinasıysa ona http üzerinden erişilirken content-type olarak “application/coffee-pot-command” set edilmeli ve brew/post methodlarını desteklemelidir. ama eğer erişmeye çalıştığımız cihaz bir kahve makinası değil de çaydanlıksa kendisinin “418 i’m a teapot” cevabını döndürmesi gerekir.

  • 421 Misdirected Request- Yanlış Yönlendirilmiş İstek

İstek, yanıt üretemeyen bir sunucuya yönlendirildi.

  • 422 Unprocessable Entity -İşlenemeyen Varlık

İstek iyi biçimlendirilmiş ancak anlamsal hatalar, isteğin işlenmesini engelliyor.

  • 423 Locked- Kilitli

İsteğin değiştirmeye çalıştığı kaynak kilitlidir.

  • 424 Failed Dependency- Başarısız Bağımlılık

Önceki bir isteğin (örneğin bir PROPPATCH) başarısız olması nedeniyle istek başarısız oldu.

  • 425 Too Early- Çok Erken

Sunucu, yeniden yürütülebilecek bir isteği işleme koyma riskini almak istemiyor.

  • 426 Upgrade Required -Yükseltme Gerekli

İstemci farklı bir protokole (TLS/1.0 gibi) geçmelidir.

  • 428 Precondition Required Önkoşul Gerekli

Sunucu, isteğin koşullu olmasını gerektirir.

  • 429 Too Many Requests Çok Fazla İstek

İstemci, belirli bir süre içinde çok fazla istek gönderdi.

  • 431 Request Header Fields – Başlık Alanlarını da İste

Büyük Sunucu, başlık alanları çok büyük olduğu için isteği işlemek istemiyor.

  • 451 Unavailable for Legal -Yasal Sebeplerle Müsait Değil

Müşteri, engellenen site veya sayfa gibi yasal nedenlerle kaldırılan bir kaynağı talep eder.

Server Error

  • 500 – Internal server error – Dahili sunucu hatası:

Sunucunun çeşitli nedenlerden dolayı bir hatayla karşılaştığı çok genel bir hata. Sunucunun dahili bir hataya neden yanıt verdiğini görmek için günlükler incelenmelidir.

Herhangi bir 500 durum kodu (500, 503, vb.), isteğin tamamlanmadığı anlamına gelir. Bunlar çok geneldir ve sunucudaki çok çeşitli sorunları kapsadıkları için teşhis edilmesi çok daha zor olabilir. Genellikle, bu sorunların temel nedenini bulmak için bir geliştirme ekibi gerekir.

Bu hatayı son kullanıcı asla görmemelidir. Bir kullanıcının veya arama motorunun karşılaşması gereken bir şey değil ve sorunun çözülmesi gerekiyor. Bazen bunu, sunucu aşırı yüklendiğinde veya çalışmadığında, Screaming Frog gibi araçları kullanarak sitenin taranması sırasında görüyoruz.

  • 501 Not Implemented –Uygulanmadı

Sunucu isteği yerine getirmek için gereken işlevselliği desteklemiyor.

  • 502 Bad Gateway Sunucu hatası

Sunucu, bir ağ geçidi veya proxy görevi görüyordu ve Tomcat, WebSphere gibi origin sunucusundan geçersiz bir yanıt aldı.

  • 503 – Service Unavailable – Hizmet kullanılamıyor

Sunucu, isteğinizi yerine getiremiyor. Bunun nedeni sunuculardan birinin başka şeylerle çok meşgul olması veya neredeyse ölü olması olabilir.

  • 504 Gateway Timeout –Geçidi Zaman Aşımı

Sunucu, isteği yerine getirmeye çalışırken bir origin sunucusundan zamanında yanıt almadı.

  • 505 HTTP Version Not Supported- HTTP Sürümü Desteklenmiyor

Sunucu, istekte kullanılan HTTP protokolü sürümünü desteklemiyor.

  • 506 Variant Also Negotiates – Varyantı da Görüşülür

Sunucuda dahili bir yapılandırma hatası var: istek için şeffaf içerik anlaşması döngüsel bir referansla sonuçlanıyor.

  • 507 Insufficient Storage- Yetersiz Depolama

Sunucu, isteği tamamlamak için gereken temsili depolayamıyor.

  • 508 Loop Detected – Döngü Algılandı

Sunucu, isteği işlerken (WebDAV) sonsuz bir döngü algıladı.

  • 510 Not Extended – Genişletilmemiş

Sunucunun isteği yerine getirmesi için isteğin daha fazla genişletilmesi gerekir (RFC 2774).

  • 511 Network Authentication Required- Ağ Kimlik Doğrulaması Gerekli

İstemcinin ağa erişmek için kimlik doğrulaması yapması gerekiyor

Umarım artık HTTP durum dönüş kodu hakkında bir fikriniz vardır. Bunu yararlı bulursanız, arkadaşlarınızla paylaşmanıza yardımcı olun.

İlgili İçerikler

Playwright Yapılandırma Dosyası: playwright.config.ts

Playwright, modern web uygulamaları için uçtan uca testler yazmak...

Playwright’ı Neden Kullanmalıyız?

Playwright, Microsoft tarafından geliştirilen bir açık kaynaklı test otomasyon...

Yazılım Testi Nedir? Temel Kavramlar ve Uygulama Yöntemleri Rehberi

Yazılım Testinin Tanımı ve Amacı Yazılım testi, bir yazılım ürününün...

DevOps Yolculuğunda İdeal Çalışma Ortamları

DevOps, yazılım geliştirme (Development) ve operasyon (Operations) ekipleri arasındaki...

API’lerin Çalışma Şekli: Basit Bir Açıklama

API (Application Programming Interface - Uygulama Programlama Arayüzü), farklı...
Sonraki İçerik

İncelemelerim