2014-05-17 4 views
77

Ich muss den Content-Type Header-Wert validieren, bevor Sie ihn an die HTTP-Anfrage übergeben.Was sind alle möglichen Werte für den HTTP-Header "Content-Type"?

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

Gibt es sonst eine Möglichkeit, den Inhaltstyp zu validieren, bevor er in der HTTP-Anfrage verwendet wird?

+5

Gültige Medientypen sollen bei der IANA werden - Sie eine aktuelle Liste finden Sie hier: http: //www.iana.org/assignments/media-types/media-types.xhtml Beachten Sie jedoch, dass sich diese Liste im Laufe der Zeit aktualisieren kann. Es gibt keine feste erlaubte Liste. – Joe

Antwort

30

Als is defined in RFC 1341:

In der erweiterten BNF-Notation von RFC 822, ein Content-Type-Header-Feld Wert ist wie folgt definiert:

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

Typ: = "application"/"audio" /"Bild"/"message" /"Multipart"/"text" /"video"/x-Token

x-Token : = < Die beiden Zeichen "X" verfolgt, ohne Leerraum dazwischen, von jedem Token>

Subtyp: = Token

Parameter: = Attribut "=" value

attribute: token =

Wert: = Token/zitiert-string

token: = 1 *

tspecials: = "("/")"/"<"/">"/"@"; Muss in /","/";" sein/":"/"\"/< ">; Anführungszeichenfolge, /"/"/" ["/"] "/"? "/". "; Zu verwenden innerhalb /" = "; Parameterwerte

und a list of known MIME types dass es folgen kann (oder, wie Joe bemerkt, the IANA source).

wie Sie die Liste sehen viel zu groß ist für Sie gegen alle von ihnen zu bestätigen. Was Sie tun können, ist validiere gegen das allgemeine Format und das type Attribut, um sicherzustellen, dass es korrekt ist (die Menge der Optionen ist klein) und gehe einfach davon aus, dass das, was folgt, korrekt ist (und natürlich alle Ausnahmen abfängt, wenn du es tatsächlich verwendest)

Beachten Sie auch den Kommentar oben:

Wenn eine andere primäre Art aus irgendeinem Grund verwendet werden soll, muss es einen Namen beginnend mit „X-“ gegeben werden, um ihre Nicht-Standard-Status anzuzeigen und zu vermeiden jeder mögliche Konflikt mit einem zukünftigen offiziellen Namen.

Sie werden feststellen, dass viele HTTP-Anfragen/Antworten einen X- Kopf irgendeiner Art enthalten, die definiert sich selbst sind, denken Sie daran, wenn die Typen der Validierung.

+0

RFC 1341 ist nicht relevant für HTTP. –

+2

RFC 1341 beschreibt Content-Type-Header, die in HTTP verwendet werden. Wie genau würden Sie sagen, dass sie nicht verwandt sind? –

+2

Es wurde veraltet und durch neuere Dokumente mehrfach ersetzt. Was relevant ist, ist was (plus die referenzierten Dokumente) müssen sagen. –

0

Wenn Sie Jaxrs oder andere verwenden, dann wird es eine Klasse namens mediatype.User Interceptor geben, bevor Sie die Anfrage senden und vergleichen Sie diese.

1

Ich würde versuchen, eine Teilmenge von möglichen "Content-Type" -Werten zu decken, die Sie in Frage zu stellen scheinen, konzentriert sich auf die Identifizierung bekannter Inhaltstypen.

@Jeroen RFC 1341 Referenz ist großartig, aber für eine ziemlich erschöpfende Liste hält IANA eine Webseite von offiziell registrierten Medientypen here.

+0

Das sind keine "bekannten" Medientypen (d. H. Proben von dem, was "in der Wildnis" beobachtet wurde), sondern Medientypen, die die IANA-Registrierungsverfahren durchlaufen haben. Sie sind daher offiziell registriert. Ich fand es wichtig, dies herauszustellen :) – DaSourcerer

39

Der Content-Type-Header in einer HTTP-Anforderung oder Antwort beschreibt den Inhalt

Typen für den Nachrichtentext. Die Akzeptieren Header in der Anforderung teilt dem Server die

Inhaltstypen, die der Client in der Antwort Nachricht erwartet. Die Inhaltstypen sind

dargestellt mit dem Internet-Medientyp. Der Internet-Medientyp (auch

der MIME-Typ) gibt den Typ der Daten an, die eine Datei enthält. Hier ein Beispiel:

     Content-Type: text/html 

Dieser Header zeigt an, dass der Body-Inhalt im HTML-Format dargestellt wird. Das

Format des Inhaltstyp-Wertes ist ein primär durch ein optionales

Semikolon Attribut-Wert-Paare (bekannt als Parameter), gefolgt Typ/Subtyp.

Die Internet-Medientypen in den folgenden Kategorien auf der Grundlage des primären (oder initial) Content-Type Header breit klassifiziert werden:

  • Text: zeigt diese Art, dass der Inhalt Klartext und keine spezielle Software ist erforderlich, um den Inhalt zu lesen. Der Subtyp stellt spezifischere Details über den Inhalt dar, die vom Client für eine spezielle Verarbeitung verwendet werden können. Zum Beispiel Content-Type:text/html zeigt an, dass der Body-Inhalt HTML ist, und der Client kann diesen Hinweis verwenden, um die Rendering-Engine zu stossen, während die Antwort angezeigt wird.
  • multipart: Wie der Name besagt, besteht dieser Typ aus mehreren Teilen der unabhängigen Datentypen. Beispiel: Content-Type:multipart/form-data wird zum Senden von Formularen verwendet, die Dateien, Nicht-ASCII-Daten und Binärdaten enthalten.
  • Nachricht: Dieser Typ kapselt mehr Nachrichten ein. Es ermöglicht Nachrichten, andere Nachrichten oder Zeiger auf andere Nachrichten zu enthalten. Zum Beispiel ermöglicht der Inhaltstyp Content-Type: Nachricht/teilweise Inhalt große Nachrichten in kleinere Nachrichten aufgeteilt werden. Die vollständige Nachricht kann dann vom Client (Benutzeragenten) gelesen werden, indem alle fehlerhaften Nachrichten zusammengefügt werden.
  • Bild: Dieser Typ repräsentiert die Bilddaten. Zum Beispiel Content-Type:image/png zeigt an, dass der Body-Inhalt ein .png-Bild ist.
  • Audio: Dieser Typ gibt die Audiodaten an. Zum Beispiel Content-Type:audio/mpeg zeigt an, dass der Body-Inhalt MP3 oder anderes MPEG-Audio ist.
  • Video: Dieser Typ gibt die Videodaten an. Zum Beispiel Content-Type:, video/mp4 zeigt an, dass der Body-Inhalt MP4 Video ist.
  • Anwendung: Dieser Typ repräsentiert die Anwendungsdaten oder Binärdaten. Zum Beispiel Inhalt-Typ: Anwendung/JSON; charset = utf-8 bezeichnet den Inhalt im Format JavaScript-Objektnotation (JSON), codiert mit UTF-8-Zeichencodierung.

auf die vollständige Liste verweisen, auf der Website von Internet Assigned Numbers Authority (IANA) besuchen bei Media Types

-4

diesen Code Setzen Sie für "Content-Typ" zur Laufzeit bekommen:

vb. net:

dim ContentType = Web.MimeMapping.GetMimeMapping("c:\MyArchive.zip") 

Oder

dim ContentType = Web.MimeMapping.GetMimeMapping(".zip") 
4

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

aber die häufigste Art sind:

  1. Typ Anwendung

    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

  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 mehrteiliger

    multipart/mixed
    multipart/alternative
    multipart/related (unter Verwendung von MHTML (HTML-Mail).)

  5. Typ Text

    text/css
    text/csv
    text/html
    text/javascript (veraltet)
    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.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
    applicatio n/vnd.openxmlformats-officedocument.wordprocessingml.document
    application/vnd.mozilla.xul + xml

Verwandte Themen