Kabul Et ve İçerik Türü HTTP başlıkları arasındaki fark


119

Bu yüzden Acceptbaşlık, sunucuya tarayıcının aradığı kaynağın MIME tipini söyler. Örneğin, sunucu düz metin, HTML, JSON vb. Gönderebilir.

Tamam, bu mantıklı, ama Content-Typebaşlığa baktığımda ve aynı şeyi yapıyor gibi görünüyor. Örneğin, sunucuya metin veya JSON istediğini söyler.

Peki Acceptve Content-TypeHTTP başlıkları arasındaki fark nedir?

Yanıtlar:


155

Doğru bir şekilde not ettiğiniz gibi, Kabul Et başlığı , HTTP istemcileri tarafından sunucuya hangi içerik türlerini kabul edeceklerini bildirmek için kullanılır. Sunucu daha sonra müşteriye iade edilen içeriğin içerik türünün gerçekte ne olduğunu söyleyen bir İçerik Türü başlığı içeren bir yanıt gönderir .

Ancak, fark etmiş olabileceğiniz gibi, HTTP istekleri İçerik Türü başlıkları da içerebilir . Neden? POST veya PUT isteklerini düşünün . Bu istek türlerinde, istemci aslında isteğin bir parçası olarak sunucuya bir demet veri gönderiyor ve İçerik Türü başlığı, sunucuya verinin gerçekte ne olduğunu (ve dolayısıyla sunucunun onu nasıl ayrılacağını belirler) bildirir.

Özellikle, bir HTML formu gönderiminden kaynaklanan bir POST isteği için, isteğin İçerik Türü (normalde) , etiketteki öznitelikte belirtildiği şekilde aşağıdaki standart form içerik türlerinden biri olacaktır :enctype<form>

  • application/x-www-form-urlencoded (az miktarda basit ASCII metni için varsayılan, daha eski, daha basit, daha az ek yük, dosya yükleme desteği yok)
  • multipart/form-data (daha yeni, büyük miktarda ikili veri veya ASCII dışı metinler için daha verimli, dosya yüklemeleri için destek ekler)

22
  • Kabul et : tarayıcının sindirebildiği şey, örneğin birisinin anlayabileceği tüm dilleri.
  • Content-Type : asıl verinin hangi formatta olduğu, örneğin hangi dili konuştuğu. Bilgisayarlar (yani, şimdi anlayamazlar), insanların "ah, o Alman!" ya da "Çince konuşuyor!"

1
Bir tarayıcı değil, herhangi bir http istemcisi olmak zorunda değil.
Jim Aho,

20

Kabul etmek gibidir

İşte isteğim ve bu yanıt formatını (Kabul etmek) istiyorum

İçerik Tipi gibidir

İşte isteğim (veya yanıtım) ve bu (İçerik Türü) isteğimde (veya yanıtımda) gönderdiğim içeriğin biçimidir.


Buraya geç kaldığımı biliyorum ama merak ediyorum, yanıt biçimi sunucu tarafından "Kabul et" biçiminde gönderilmezse ne olur?
çığlık

1
@ Shriek'e karar vermek müşteriye kalmış. Sanırım çoğu http istemcisi (veya tarayıcısı) gerçek verilere "akıllıca" bakacak ve gerçekte ne olduğunu görecek. Belki bir müşteri JSON olması gerekiyorsa yanıtı da göz ardı edebilir, ancak ayrıştırma başarısız olur, çünkü başka bir şey gibi görünüyor.
Jim Aho,

5

Bu bir istek-cevap sohbetidir, yani müşteri

  • "İçerik Türü" isteği gönderir ve
  • "Kabul et" ortam türünün yanıtını almayı bekliyor.

Yanlış. Kabul et bir istek başlığıdır. Kabul edilen cevaba bakınız.
darron

2
@darron Hayır, bu cevap doğru. Bir istek başlığı olmadığını söylemiyor, amacının sunucuya geri dönmesini beklediği yanıtı anlatmak olduğunu söylüyor. Diğer cevaplarla biraz fazlalık, ama bence en özlü olanı. +1.
Todd Menier,

0

Kabul etmek

Kabul etme isteği HTTP başlığı, müşterinin anlayabildiği, MIME türü olarak ifade edilen içerik türlerinin reklamını yapar. İçerik görüşmesini kullanarak, sunucu tekliflerden birini seçer, onu kullanır ve müşteriye istediği içeriği İçerik Türü yanıtı başlığıyla bildirir. Tarayıcılar, bu başlık için isteğin yapıldığı içeriğe bağlı olarak yeterli değerleri belirler: bir CSS stil sayfası getirilirken, istek için bir resim, video veya bir komut dosyası almaktan farklı bir değer ayarlanır.

( kaynak: developer.mozilla.org )

İçerik türü

Content-Type varlık başlığı, kaynağın ortam türünü belirtmek için kullanılır.

Yanıtlarda, bir İçerik Türü başlığı müşteriye, iade edilen içeriğin içerik türünün gerçekte ne olduğunu söyler. Tarayıcılar bazı durumlarda MIME koklama yapacak ve bu başlığın değerini takip etmeyeceklerdir; Bu davranışı önlemek için, X-Content-Type-Options başlığı nosniff olarak ayarlanabilir.

İsteklerde (POST veya PUT gibi), istemci, sunucuya gerçekte ne tür veri gönderildiğini bildirir.

( kaynak: developer.mozilla.org )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.