479 Stimmen

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

Ich muss den Wert des Content-Type-Headers validieren, bevor ich ihn an eine HTTP-Anforderung weitergebe.

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

Ansonsten, gibt es eine Möglichkeit, den Inhaltstyp zu validieren, bevor er in einer HTTP-Anforderung verwendet wird?

583voto

lebarillier Punkte 5884

Sie können hier alle Inhaltstypen finden: http://www.iana.org/assignments/media-types/media-types.xhtml

Die häufigsten Typen sind:

  1. Typ Anwendung:

     application/java-archive
     application/EDI-X12   
     application/EDIFACT   
     application/javascript (veraltet) 
     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. Typ Audio:

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

     image/gif   
     image/jpeg   
     image/png   
     image/tiff    
     image/vnd.microsoft.icon    
     image/x-icon   
     image/vnd.djvu   
     image/svg+xml    
  4. Typ Mehrteilig:

     multipart/mixed    
     multipart/alternative   
     multipart/related (verwendet von MHTML (HTML-E-Mail).)  
     multipart/form-data  
  5. Typ Text:

     text/css    
     text/csv    
     text/html    
     text/javascript   
     text/plain    
     text/xml    
  6. Typ Video:

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

     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

56voto

Jeroen Vannevel Punkte 42391

Wie in RFC 1341 definiert ist:

In der erweiterten BNF-Notation von RFC 822 wird ein Content-Type-Headerfeldwert wie folgt definiert:

Content-Type := Typ "/" Subtyp *[";" Parameter]

Typ := "application" / "audio" / "image" / "message" / "multipart" / "text" / "video" / x-token

x-token :=

Subtyp := Token

Parameter := Attribut "=" Wert

Attribut := Token

Wert := Token / quoted-string

Token := 1*

tspecials := "(" / ")" / "<" / ">" / "@" ; Muss sein in / "," / ";" / ":" / "" / <"> ; quoted-string, / "/" / "[" / "]" / "?" / "." ; verwendbar innerhalb / "=" ; von Parameterwerten

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

Wie Sie sehen können, ist die Liste zu groß, um sie gegen alle zu validieren. Was Sie tun können, ist gegen das allgemeine Format und das Typ-Attribut validieren, um sicherzustellen, dass es korrekt ist (die Auswahlmöglichkeiten sind gering) und einfach annehmen, dass das, was darauf folgt, korrekt ist (und natürlich mögliche Ausnahmen erfassen, auf die Sie bei der tatsächlichen Verwendung stoßen könnten).

Beachten Sie auch den vorstehenden Kommentar:

Wenn aus irgendeinem Grund ein anderer primärer Typ 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-Anfragen/Antworten eine Art X--Header enthalten, die selbst definiert sind. Behalten Sie dies im Hinterkopf, wenn Sie die Typen validieren.

3voto

Peter Hornsby Punkte 4208

Ich würde darauf abzielen, eine Auswahl möglicher "Content-Type"-Werte abzudecken, Ihre Frage scheint sich darauf zu konzentrieren, bekannte Inhaltsarten zu identifizieren.

@Jeroen Der Verweis auf RFC 1341 ist großartig, aber für eine ziemlich erschöpfende Liste behält die IANA eine Webseite für offiziell registrierte Medientypen hier bei.

0voto

geddamsatish Punkte 174

Wenn Sie jaxrs oder etwas anderes verwenden, wird es eine Klasse namens MediaType.User-Interceptor geben, die den Request vor dem Senden vergleicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X