Status Kodu 406 Kabul Edilemez Ne Anlama Gelir?

INEZA Felin-Michel

INEZA Felin-Michel

30 September 2025

Status Kodu 406 Kabul Edilemez Ne Anlama Gelir?

HTTP durum kodlarının zengin sözlüğünde, bazı kodlar diğerlerinden daha fazla öne çıkarken, bazıları istemci-sunucu iletişiminin sorunsuz olmasını sağlamada hayati roller üstlenir. 406 Not Acceptable durum kodu da bu daha az bilinen kahramanlardan biridir. Popüler 404 veya 500 kadar sık görünmeyebilir, ancak amacını anlamak, içerik uzlaşması konusundaki kavrayışınızı önemli ölçüde geliştirebilir ve web uygulamalarınızın ve API'lerinizin esnekliğini artırabilir.

406 Not Acceptable durum kodu, sunucunuzdan gelen şifreli bir mesaj gibi hissedilebilir. Ancak ne anlama geldiğini anladığınızda, daha temiz, daha öngörülebilir ve daha kullanıcı dostu API'ler tasarlamanıza yardımcı olan güçlü bir sinyal haline gelir.

Bu durum kodu, istemciler ve sunucuların veri alışverişi için en iyi biçim üzerinde anlaştığı, içerik uzlaşması sürecinin karmaşık dansında bir iletişim kopukluğunu temsil eder.

Bu blog yazısında, HTTP 406 Not Acceptable'ın ne anlama geldiğini, neden ortaya çıktığını, içerik uzlaşmasının onu nasıl etkilediğini ve bir geliştirici veya API tüketicisi olarak bununla nasıl etkili bir şekilde başa çıkabileceğinizi derinlemesine inceleyeceğiz. 406 Not Acceptable gibi garip hataları doğru araçlar olmadan ayıklamak zaman alıcı olabilir. Bu yüzden Apidog'u öneriyorum. API'leri kolayca tasarlamanıza, taklit etmenize, test etmenize, ayıklamanıza ve belgelemenize olanak tanıyan ücretsiz, hepsi bir arada bir API platformudur, böylece neden 406 aldığınızı ve hızlıca nasıl düzelteceğinizi tam olarak bilirsiniz.

💡
406 durumuna sahip yanıtlar da dahil olmak üzere API'leri sorunsuz bir şekilde keşfetmek ve test etmek isterseniz, Apidog'u ücretsiz indirin. Apidog, 406 gibi HTTP durum kodlarını incelemeyi kolay ve etkili hale getiren önemli bir API test ve dokümantasyon aracıdır.
button

Şimdi, içerik uzlaşması dünyasını ve HTTP 406 Not Acceptable durum kodunu keşfedelim.

Sorun: Herkes Veriyi Kendi İstediği Şekilde İstiyor

Web'in ilk günlerinde, sunucular genellikle kaynakları için tek bir format sunuyordu: genellikle HTML. Ancak web geliştikçe, farklı ihtiyaçlara sahip farklı istemciler ortaya çıktı:

406 durum kodu, bazen bir istemcinin sunucunun o belirli kaynak için sağlayamayacağı bir format istemesi nedeniyle mevcuttur.

HTTP 406 Not Acceptable Gerçekten Ne Anlama Geliyor?

406 Not Acceptable durum kodu, sunucunun isteğin proaktif içerik uzlaşma başlıklarında tanımlanan kabul edilebilir değerler listesiyle eşleşen bir yanıt üretemediğini ve sunucunun varsayılan bir gösterim sağlamaya istekli olmadığını belirtir.

Daha basit bir ifadeyle: "Bana tam olarak hangi formatları kabul edeceğini söyledin ve ben kaynağı bu formatlardan herhangi birinde sağlayamıyorum."

Uygun bir 406 yanıtı, sunucunun istenen kaynak için hangi formatları sağlayabileceği hakkında bilgi içermelidir. Bu genellikle başlıklarla veya yanıt gövdesinde yapılır.

İşte bir 406 yanıtının nasıl görünebileceği:

HTTP/1.1 406 Not AcceptableContent-Type: text/htmlVary: Accept
<html><head><title>406 Not Acceptable</title></head><body><h1>Not Acceptable</h1><p>This resource is available in the following formats:</p><ul><li>application/json</li><li>application/xml</li></ul></body></html>

API'ler için yapılandırılmış bir yanıt döndürmek daha faydalıdır:

HTTP/1.1 406 Not AcceptableContent-Type: application/jsonVary: Accept
{
  "error": "not_acceptable",
  "message": "The requested resource is not available in the requested format.",
  "available_formats": [
    "application/json",
    "application/xml"
  ]
}

İsteğin geçerli olup olmadığıyla ilgili değil. Yanıt türünün kabul edilebilir olup olmadığıyla ilgili.

İçerik Uzlaşmasının Büyüsü: Accept Başlıkları Nasıl Çalışır?

406'yı anlamak için, istemcilerin sunuculara hangi formatları tercih ettiklerini nasıl söylediklerini anlamamız gerekir. Bu, Accept başlığı aracılığıyla gerçekleşir.

Accept Başlığı Uygulamada

Bir istemci istek yaptığında, hangi içerik türlerini işleyebileceğini ve hangilerini tercih ettiğini belirtebilir:

Basit bir örnek:

GET /api/users/123 HTTP/1.1Accept: application/json

Bu şunu söyler: "Kullanıcı verisi istiyorum ve sadece JSON anlıyorum."

Daha karmaşık bir örnek:

GET /api/users/123 HTTP/1.1Accept: application/json, text/html;q=0.9, application/xml;q=0.8

Bu şunu söyler: "JSON'ı tercih ederim, ancak HTML'i de (%90 tercih ile) ve XML'i de (%80 tercih ile) işleyebilirim."

q parametresi (kalite değeri) 0 ile 1 arasında değişir, 1 en çok tercih edilendir.

Uzlaşma Başarısız Olduğunda

Bir 406 hatası, sunucunun Accept başlığına baktığında şunları fark etmesiyle oluşur:

  1. İstemcinin istediği kaynağa sahip olduğu
  2. İstemcinin belirttiği formatlardan hiçbirinde sağlayamadığı
  3. Varsayılan bir format göndermeye istekli olmadığı (örneğin, yalnızca XML kabul eden bir istemciye JSON göndermek gibi)

406 Not Acceptable, İçerik Uzlaşmasına Nasıl Uyar?

Bir istemci, kabul edilebilir medya türlerini belirten (örneğin, yalnızca JSON yanıtları isteyen) Accept başlıklarını içeren bir HTTP isteği gönderdiğinde, sunucu içeriği buna göre teslim etmeye çalışacaktır.

Sunucu, kriterlere uyan kabul edilebilir herhangi bir içerik sağlayamazsa, şu şekilde yanıt verir:

textHTTP/1.1 406 Not Acceptable Content-Type: text/html

Bu noktada, sunucunun isteği reddettiği anlamına gelir, çünkü mevcut içerik gösterimlerinden hiçbiri istemcinin tercihlerine uymamaktadır.

Sunucular Neden 200 OK Yerine 406 Döndürür?

Şöyle düşünebilirsiniz: neden tercih edilen format olmasa bile bir şeyler döndürmeyesiniz ki?

İşte sunucuların neden 406 döndürdüğü:

406 Yanıtının Yaygın Nedenleri

İşte 406 Not Acceptable görmenizin bazı tipik nedenleri:

406 Hatalarını Tetikleyen Gerçek Dünya Senaryoları

1. API Sürümleme Çakışmaları

Yalnızca v2'sinde JSON sunan bir API düşünün, ancak bir istemci hala v1 günlerinden XML bekliyor:

GET /v2/products/456 HTTP/1.1Accept: application/xmlHTTP/1.1 406 Not AcceptableContent-Type: application/json
{
  "error": "This API version only supports JSON",
  "available_formats": ["application/json"]
}

2. Aşırı Kısıtlayıcı İstemci Yapılandırması

Bir mobil uygulama yalnızca JSON kabul edecek şekilde sabit kodlanmış olabilir, ancak belirli kaynakları yalnızca XML olarak sunan bir sunucuyla karşılaşır:

GET /reports/quarterly-sales HTTP/1.1Accept: application/jsonHTTP/1.1 406 Not Acceptable

(Rapor yalnızca CSV veya PDF olarak mevcut olabilir)

3. Eksik Varsayılan Geri Dönüş

Bazı sunucular, içerik uzlaşması konusunda katı olacak şekilde yapılandırılmıştır ve uzlaşma başarısız olduğunda hangi formatı döndüreceklerini tahmin etmeyi reddederler.

Sunucular Genellikle 406'yı Nasıl İşler?

İlginç bir şekilde, bazı sunucular katı içerik uzlaşmasını göz ardı eder ve 406 ile yanıt vermek yerine varsayılan bir yanıta geri döner.

Ancak, katı RESTful API'ler veya hassas iletişime önem veren hizmetler, istemci gereksinimleri karşılanamadığında 406 döndürebilir.

406 Not Acceptable ve İlgili Durum Kodları

406'nın rolünü netleştirmek için ilgili HTTP durumlarına bakalım:

Durum Kodu Anlamı Ne Zaman Kullanılır
400 Bad Request Yanlış biçimlendirilmiş sözdizimi veya geçersiz istek İstek anlaşılamıyor
406 Not Acceptable Geçerli istek ancak sunucu kabul başlıklarını yerine getiremiyor İçerik uzlaşması hatası
415 Unsupported Media Type Sunucu, istemci tarafından gönderilen içerik türünü işleyemiyor Geçersiz istek gövdesi medyası
406 ile 415 farkı 406 yanıt türüyle, 415 istek gövdesi türüyle ilgilidir

İstemciler 406 Yanıtlarını Nasıl İşlemelidir?

406 alan istemciler şunları yapmalıdır:

Geliştiriciler 406'yı Önlemek veya İşlemek İçin Ne Yapabilir?

Özel 406 Hata Sayfaları ve Mesajları

Web siteleri ve API'ler için anlamlı ve yardımcı 406 hata yanıtları sunmak, geliştirici ve kullanıcı deneyimini iyileştirir:

Apidog ile İçerik Uzlaşmasını Test Etme

API'nizin farklı Accept başlıklarını nasıl işlediğini test etmek, sağlam uygulamalar oluşturmak için çok önemlidir. Apidog bu süreci basit ve verimli hale getirir.

Apidog ile şunları yapabilirsiniz:

  1. Başlıkları Kolayca Değiştirin: Sunucunuzun farklı içerik türü isteklerine nasıl yanıt verdiğini test etmek için Accept başlıklarını hızlıca ekleyin ve değiştirin.
  2. Birden Çok Formatı Test Edin: Kapsamlı kapsama sağlamak için aynı uç nokta için farklı Accept başlıklarıyla (JSON, XML, HTML) bir test koleksiyonu oluşturun.
  3. 406 Yanıtlarını Doğrulayın: Sunucunuzun yardımcı hata bilgileriyle uygun 406 yanıtları döndürdüğünü doğrulamak için kasıtlı olarak kısıtlayıcı Accept başlıkları gönderin.
  4. İçerik Uzlaşma Testlerini Otomatikleştirin: API'nizin çeşitli içerik türü isteklerini doğru bir şekilde işlediğini ve uygun durum kodlarını döndürdüğünü otomatik olarak doğrulayan test paketleri oluşturun.
  5. Karmaşık Senaryolarda Hata Ayıklayın: Bir 406 hatasının neden oluştuğunu ve sunucunun aslında hangi formatları desteklediğini tam olarak anlamak için Apidog'un ayrıntılı günlük kaydını kullanın.
button

Bu sistematik yaklaşım, API'nizin farklı format gereksinimlerine sahip istemcileri zarif bir şekilde yönetebilmesini sağlar. Kısacası: karanlıkta el yordamıyla ilerlemek yerine, neyin kabul edilebilir olduğunu tam olarak bilirsiniz. Apidog'u ücretsiz indirin ve içerik uzlaşması ile 406 senaryolarında sorun giderme verimliliğinizi artırın.

406 Hatalarını Yönetmek İçin En İyi Uygulamalar

Sunucu Geliştiricileri İçin:

  1. Yardımcı Hata Bilgileri Sağlayın: Bir 406 döndürürken, her zaman hangi formatları desteklediğiniz hakkında bilgi ekleyin. Bu, istemci geliştiricilerinin isteklerini düzeltmelerine yardımcı olur.
  2. Vary Başlığını Kullanın: Yanıtlarınıza Vary: Accept başlığını ekleyerek, yanıt içeriğinin Accept başlık değerine göre değiştiğini belirtin. Bu, önbellekleme sistemlerinin doğru çalışmasına yardımcı olur.
  3. Varsayılan Davranışı Göz Önünde Bulundurun: HTTP spesifikasyonu sunucuların varsayılan bir gösterim döndürmesine izin verse de, birçok modern API katı olmayı ve istemcileri gereksinimleri konusunda açık olmaya zorlamak için 406 döndürmeyi tercih eder.
  4. Desteklenen Formatları Belgeleyin: API'nizin her uç nokta için hangi içerik türlerini desteklediğini açıkça belgeleyin.

İstemci Geliştiricileri İçin:

  1. Accept Başlıklarında Esnek Olun: Belirli bir nedeniniz yoksa, Accept başlığınıza uygun kalite değerleriyle birden çok format ekleyin.
  2. 406'yı Zarif Bir Şekilde İşleyin: Bir 406 aldığınızda, mevcut formatlar için yanıtı kontrol edin ve isteğinizi ayarlayın veya kullanıcıya yardımcı bir hata mesajı gösterin.
  3. Geri Dönüş Mantığına Sahip Olun: Birincil tercih ettiğiniz format mevcut değilse, farklı formatları işleyebilecek bir geri dönüş mantığına sahip olmayı düşünün.

İçerik Uzlaşmasının Gizli Kahramanı

Vary başlığı, içerik uzlaşması söz konusu olduğunda doğru önbellekleme davranışı için çok önemlidir. Bir sunucu yanıtına Vary: Accept eklediğinde, önbelleklere yanıt içeriğinin Accept başlık değerine bağlı olduğunu söyler.

Bu, bir önbelleğin XML isteyen bir istemciye yanlışlıkla JSON yanıtı sunmasını veya tam tersini önler.

406 Yanıtlarının SEO Üzerindeki Etkisi

Genel olarak, 406 SEO'yu önemli ölçüde etkilemez çünkü arama motorları genellikle içerik uzlaşmasını sağlam bir şekilde ele alır ve geçerli yanıtları tercih eder. Ancak, yanlış yapılandırılmış API'ler veya sık sık 406 döndüren web siteleri, tarayıcıları veya kullanıcıları hayal kırıklığına uğratabilir.

Modern API Tasarımı ve 406

Modern RESTful API tasarımında, 406 kullanımı gelişmiştir:

Ancak, 406 şunlar için hala geçerlidir:

406 Hatalarında Sorun Giderme

406 Etrafındaki Güvenlik Hususları

Sonuç: Hassas İletişim İçin HTTP 406 Not Acceptable'ı Benimsemek

HTTP 406 Not Acceptable durum kodu, web mimarisinin önemli bir ilkesini temsil eder: istemciler ve sunucular arasında yetenekleri ve gereksinimleri hakkında net iletişim. Bu, korkulacak bir hata değil, veri alışverişinin karşılıklı olarak anlaşılır formatlarda gerçekleşmesini sağlayan bir mekanizmadır.

406 ile günlük olarak karşılaşmasanız da, onu anlamak sizi daha iyi bir web vatandaşı yapar. Veri formatı gereksinimleri konusunda açık olmanın ve format uzlaşmasını zarif bir şekilde ele almanın önemini öğretir.

API geliştiricileri için, içerik uzlaşmasını ve 406 yanıtlarını doğru bir şekilde uygulamak, daha sağlam ve esnek API'lere yol açar. İstemci geliştiricileri için, 406 hatalarıyla nasıl çalışılacağını anlamak, uygulamalarınızın farklı sunucu yeteneklerine uyum sağlayabilmesini sağlar.

Verilerin farklı sistemler ve platformlar arasında akması gereken bir dünyada, içerik formatını müzakere etme yeteneği her zamankinden daha değerlidir. Ve bu müzakereleri test etmeniz ve mükemmelleştirmeniz gerektiğinde, Apidog gibi bir araç, format tercihlerinden bağımsız olarak uygulamalarınızın etkili bir şekilde iletişim kurmasını sağlamak için mükemmel bir ortam sunar.

button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin

Status Kodu 406 Kabul Edilemez Ne Anlama Gelir?