Was sind alle möglichen Werte für den HTTP-Header "Content-Type"?


270

Ich muss den Content-TypeHeader-Wert überprüfen, bevor ich ihn an eine HTTP-Anforderung übergebe.

Gibt es eine spezifische Liste für alle möglichen Werte von Content-Type?

Gibt es andernfalls eine Möglichkeit, den Inhaltstyp zu überprüfen, bevor er in einer HTTP-Anforderung verwendet wird?


9
Gültige Medientypen sollten bei der IANA registriert sein. Eine aktuelle Liste finden Sie hier: iana.org/assignments/media-types/media-types.xhtml. Beachten Sie jedoch, dass diese Liste im Laufe der Zeit aktualisiert werden kann. Es gibt keine feste Zulassungsliste.
Joe


@Joe: "Gültige Medientypen sollen bei der IANA registriert sein" - Warten Sie, bedeutet dies, dass benutzerdefinierte Medientypen (nur zur Verwendung in einer anwendungsspezifischen Web-API, die nur von einer benutzerdefinierten Clientanwendung aufgerufen wird) verwendet werden überhaupt nicht erlaubt?
ODER Mapper

1
@ORMapper Ich würde es mehr lesen als "Es gibt eine offizielle Liste, aber ich wäre nicht überrascht, viele andere in freier Wildbahn zu sehen". In Bezug auf die Frage des OP möchten Sie, wenn Sie versuchen würden, "alle Typen" zu validieren, zumindest alle registrierten Typen validieren. Was mit zusätzlichen zu tun ist, ist offener. Soweit ich weiß , gibt es keine Anforderung benutzerdefinierte Typen zu registrieren.
Joe

Bitte akzeptieren Sie die Antwort, die Ihnen bei der Lösung Ihres Problems am meisten geholfen hat. Es hilft zukünftigen Lesern. Wenn die Antworten nicht hilfreich waren, hinterlassen Sie Kommentare darunter. Das Poster kann sie also entsprechend aktualisieren. Lesen Was soll ich tun, wenn jemand meine Frage beantwortet? mehr wissen.
Roshana Pitigala

Antworten:


253

Sie finden jeden Inhaltstyp hier: http://www.iana.org/assignments/media-types/media-types.xhtml

Die häufigsten Typen sind:

  1. Geben Sie application ein

    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. Geben Sie Audio ein

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
  3. Bild eingeben

    image/gif   
    image/jpeg   
    image/png   
    image/tiff    
    image/vnd.microsoft.icon    
    image/x-icon   
    image/vnd.djvu   
    image/svg+xml    
    
  4. Geben Sie mehrteilig ein

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

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
  6. Video eingeben

    video/mpeg    
    video/mp4    
    video/quicktime    
    video/x-ms-wmv    
    video/x-msvideo    
    video/x-flv   
    video/webm   
    
  7. Geben Sie vnd ein:

    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

Wie in RFC 1341 definiert :

In der erweiterten BNF-Notation von RFC 822 ist ein Header-Feldwert für den Inhaltstyp wie folgt definiert:

Inhaltstyp: = Typ "/" Subtyp * [";" Parameter]

Typ: = "Anwendung" / "Audio" / "Bild" / "Nachricht" / "mehrteilig" / "Text" / "Video" / x-Token

x-token: = <Auf die beiden Zeichen "X-" folgte ohne Leerzeichen ein Token>

Subtyp: = Token

Parameter: = Attribut "=" Wert

Attribut: = Token

Wert: = Token / Anführungszeichenfolge

Token: = 1 *

tspecials: = "(" / ")" / "<" / ">" / "@"; Muss in / "," / ";" / ":" / "\" / <">; Anführungszeichenfolge, /" / "/" ["/"] "/"? "/". "; Verwendung innerhalb von /" = "; Parameterwerten

Und eine Liste bekannter MIME-Typen , die darauf folgen können (oder, wie Joe bemerkt, die IANA-Quelle ).

Wie Sie sehen, ist die Liste viel zu groß, als dass Sie sie gegen alle validieren könnten. Was Sie tun können, ist anhand des allgemeinen Formats und des typeAttributs zu validieren , um sicherzustellen, dass es korrekt ist (der Satz von Optionen ist klein), und einfach davon auszugehen, dass das Folgende korrekt ist (und natürlich alle Ausnahmen zu erfassen, die beim Einfügen auftreten können zur tatsächlichen Verwendung).

Beachten Sie auch den obigen Kommentar:

Wenn ein anderer Primärtyp aus irgendeinem Grund verwendet werden soll, muss ihm ein Name gegeben werden, der mit "X-" beginnt, um seinen nicht standardmäßigen Status anzuzeigen und mögliche Konflikte mit einem zukünftigen offiziellen Namen zu vermeiden.

Sie werden feststellen, dass viele HTTP-Anforderungen / -Antworten einen X-selbst definierten Header enthalten. Beachten Sie dies bei der Überprüfung der Typen.


RFC 1341 ist für HTTP nicht relevant.
Julian Reschke

2
RFC 1341 beschreibt Content-Type-Header, die in HTTP verwendet werden. Wie genau würden Sie sagen, dass sie nichts miteinander zu tun haben?
Jeroen Vannevel

2
Es wurde veraltet und mehrfach durch neuere Dokumente ersetzt. Relevant ist, was < greenbytes.de/tech/webdav/… > (plus die Dokumente, auf die verwiesen wird) zu sagen hat.
Julian Reschke

3

Ich würde versuchen, eine Teilmenge möglicher "Inhaltstyp" -Werte abzudecken. Ihre Frage scheint sich auf die Identifizierung bekannter Inhaltstypen zu konzentrieren.

@Jeroen RFC 1341 Referenz ist groß, aber für eine ziemlich vollständige Liste der IANA hält eine Web - Seite der offiziell registrierten Medientypen hier .


Dies sind keine "bekannten" Mediatypen (dh Proben dessen, was "in freier Wildbahn" beobachtet wurde), sondern Mediatypen, die die IANA-Registrierungsverfahren durchlaufen haben. Sie sind daher offiziell registriert. Fand es wichtig darauf hinzuweisen :)
DaSourcerer

0

Wenn Sie jaxrs oder eine andere verwenden, gibt es eine Klasse namens mediatype.User interceptor, bevor Sie die Anforderung senden und mit dieser vergleichen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.