HTTP “Content-Type” başlığı için tüm olası değerler nelerdir?


270

Content-TypeBir HTTP isteğine iletmeden önce üstbilgi değerini doğrulamalıyım .

İçin tüm olası değerler için belirli bir liste var mı Content-Type?

Aksi takdirde, içerik türünü bir HTTP isteğinde kullanmadan önce doğrulamanın bir yolu var mı?


9
Geçerli ortam türlerinin IANA'ya kayıtlı olması gerekir - burada güncel bir liste görebilirsiniz: iana.org/assignments/media-types/media-types.xhtml ancak bu listenin zaman içinde güncellenebileceğini unutmayın. Sabit bir izin verilen liste yok.
Joe


@Joe: "Geçerli medya türlerinin IANA'ya kayıtlı olması gerekiyor" - bekleyin, bu özel medya türleri anlamına mı geliyor (yalnızca özel bir istemci uygulaması tarafından çağrılacak uygulamaya özel bir web API'sinde kullanım için) hiç izin verilmiyor mu?
VEYA Haritacı

1
@ ORMapper "resmi bir liste var, ama vahşi başkalarını görmek için sürpriz olmaz" olarak daha fazla okumak istiyorum. OP sorusu açısından, "tüm türleri" denemek ve doğrulamak isterseniz, en azından kayıtlı tüm türleri doğrulamak istersiniz. Ek olanlarla ne yapmak daha açık uçlu. Gibi bildiğim kadarıyla orada hiçbir gereklilik özel türleri kayıt.
Joe

Lütfen sorununuzu çözmede size en çok yardımcı olan yanıtı kabul edin. Gelecekteki okuyuculara yardımcı olur. Cevaplar yardımcı olmadıysa, yorumları aşağıya bırakın. Böylece poster onları buna göre güncelleyebilir. Oku Birisi soruma cevap verdiğinde ne yapmalıyım? daha fazla bilmek.
Roshana Pitigala

Yanıtlar:


254

Her içerik türünü burada bulabilirsiniz: http://www.iana.org/assignments/media-types/media-types.xhtml

En yaygın tip:

  1. Tip uygulaması

    application/java-archive
    application/EDI-X12   
    application/EDIFACT   
    application/javascript   
    application/octet-stream   
    application/ogg   
    application/pdf  
    application/xhtml+xml   
    application/x-shockwave-flash    
    application/json  
    application/ld+json  
    application/xml   
    application/zip  
    application/x-www-form-urlencoded  
    
  2. Ses yazın

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
  3. Görüntü yazın

    image/gif   
    image/jpeg   
    image/png   
    image/tiff    
    image/vnd.microsoft.icon    
    image/x-icon   
    image/vnd.djvu   
    image/svg+xml    
    
  4. Çok parçalı yazın

    multipart/mixed    
    multipart/alternative   
    multipart/related (using by MHTML (HTML mail).)  
    multipart/form-data  
    
  5. Metin yaz

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
  6. Video yazın

    video/mpeg    
    video/mp4    
    video/quicktime    
    video/x-ms-wmv    
    video/x-msvideo    
    video/x-flv   
    video/webm   
    
  7. Vnd yazın:

    application/vnd.android.package-archive
    application/vnd.oasis.opendocument.text    
    application/vnd.oasis.opendocument.spreadsheet  
    application/vnd.oasis.opendocument.presentation   
    application/vnd.oasis.opendocument.graphics   
    application/vnd.ms-excel    
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet   
    application/vnd.ms-powerpoint    
    application/vnd.openxmlformats-officedocument.presentationml.presentation    
    application/msword   
    application/vnd.openxmlformats-officedocument.wordprocessingml.document   
    application/vnd.mozilla.xul+xml   
    

50

Şöyle tanımlanır içinde RFC 1341 :

RFC 822'nin Genişletilmiş BNF gösterimlerinde, İçerik Türü başlık alanı değeri aşağıdaki gibi tanımlanır:

İçerik Türü: = "/" alt türü * [";" yazın parametre]

type: = "uygulama" / "ses" / "görüntü" / "mesaj" / "çok bölümlü" / "metin" / "video" / x-token

x-token: = <Aradaki boşluk olmadan, "X-" karakterini takiben herhangi bir belirteç>

alt tür: = belirteç

parametre: = özellik "=" değer

özellik: = belirteç

value: = simge / alıntılanan dize

jeton: = 1 *

tspecials: = "(" / ")" / "<" / ">" / "@"; / "," / ";" İçinde olmalıdır / ":" / "\" / <">; alıntılanan dize, /" / "/" ["/"] "/"? "/". "; /" = "; parametre değerleri içinde kullanmak için

Ve onu takip edebilecek bilinen MIME türlerinin bir listesi (veya Joe'nun belirttiği gibi IANA kaynağı ).

Gördüğünüz gibi liste hepsine karşı onaylayamayacak kadar büyük. Yapabileceğiniz şey, typedoğru olduğundan (seçenekler kümesi küçüktür) emin olmak için genel formata ve özniteliğe göre doğrulamaktır ve sadece aşağıdakilerin doğru olduğunu varsayalım (ve elbette koyduğunuzda karşılaşabileceğiniz istisnaları yakalayın) gerçek kullanıma).

Ayrıca yukarıdaki yoruma da dikkat edin:

Herhangi bir nedenle başka bir birincil tür kullanılacaksa, standart dışı durumunu belirtmek ve gelecekteki bir resmi adla olası çakışmaları önlemek için "X-" ile başlayan bir ad verilmelidir.

Çok sayıda HTTP isteğinin / yanıtınınX- kendi tanımladığı bir tür başlık içerdiğini fark edeceksiniz , türleri doğrularken bunu aklınızda bulundurun.


RFC 1341, HTTP ile ilgili değildir.
Julian Reschke

2
RFC 1341, HTTP'de kullanılan İçerik Türü başlıklarını açıklar. İlişkisiz olduklarını tam olarak nasıl söylerdiniz?
Jeroen Vannevel

2
Eski hale getirildi ve birkaç kez daha yeni belgelerle değiştirildi. İlgili olan < greenbytes.de/tech/webdav/… > (artı referans alınan belgeler) 'in söyledikleridir.
Julian Reschke

3

Mümkün olan "İçerik türü" değerlerin bir alt kümesini kapsamayı hedefliyorum, sorunuz bilinen içerik türlerini tanımlamaya odaklanıyor gibi görünüyor.

@Jeroen RFC 1341 referansı harika, ancak oldukça kapsamlı bir liste için IANA burada resmi olarak kayıtlı medya türlerinin bir web sayfasını tutar .


Bunlar "bilinen" mediatipler (yani "vahşi doğada" gözlemlenenlerin örnekleri) değil, IANA kayıt prosedürlerinden geçen mediatiplerdir. Dolayısıyla resmi olarak kayıtlıdırlar. Bunu belirtmek önemli
buldum

0

Eğer jaxrs veya başka bir şey kullanıyorsanız, isteği göndermeden önce mediatype.User interceptor adlı bir sınıf olacaktır ve bunu karşılaştırınız.

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.