# Internet Media Type

Der Internet Media Type, auch MIME-Type (nach der Spezifikation Multipurpose Internet Mail Extensions) oder Content-Type (nach dem Namen des Feldes), klassifiziert die Daten im Rumpf einer Nachricht im Internet. Wie im MIME-Standard erläutert, wird z. B. bei einer HTTP-Übertragung einem Browser mitgeteilt, welche Daten der Webserver sendet – ob es beispielsweise ein Plain-Text-Dokument, ein HTML-Dokument oder ein PNG-Bild ist. Auch in E-Mails wird das „Content-Type“-Header-Feld dazu verwendet, die verschiedenen Daten zu klassifizieren.

## Medientypen

Der Internet Media Type besteht aus zwei Teilen: der Angabe eines Medientyps und der Angabe eines Subtyps. Beide Angaben werden durch einen Schrägstrich voneinander getrennt, Beispiel image/jpeg.
* application – für uninterpretierte binäre Daten, Mischformate (z. B. Textdokumente mit eingebetteten nichttextuellen Daten) oder Informationen, die von einem bestimmten Programm verarbeitet werden sollen
* audio – für Audiodaten
* example – Beispiel-Medientyp für Dokumentationen
* image – für Grafiken
* message – für Nachrichten, beispielsweise message/rfc822
* model – für Daten, die mehrdimensionale Strukturen repräsentieren
* multipart – für mehrteilige Daten
* text – für Text
* video – für Videomaterial
* chemical – für z. B.: Moleküle (inoffiziell)
Es sind zurzeit über 130 Subtypen definiert, zusätzlich integriert jede Rechnergeneration eine Vielzahl von eigenen Medientypen. Verwaltet werden die Medientypen von der Internet Assigned Numbers Authority.

## Namensgebung

Ein Medientype besteht aus einem Typ und einem Subtyp, die als Baum strukturiert sind. Ein Medientype kann optional auch einen Suffix und Parameter enthalten:
Typ "/" [Baum "."] Subtyp ["+" Suffix] *[";" Parameter]
Häufige Beispiele
* application/graphql
* application/javascript
* application/json
* application/ld+json
* application/feed+json
* application/msword (.doc)
* application/pdf
* application/sql
* application/vnd.api+json
* application/vnd.ms-excel (.xls)
* application/vnd.ms-powerpoint (.ppt)
* application/vnd.oasis.opendocument.text (.odt)
* application/vnd.openxmlformats-officedocument.presentationml.presentation (.pptx)
* application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (.xlsx)
* application/vnd.openxmlformats-officedocument.wordprocessingml.document (.docx)
* application/x-www-form-urlencoded
* application/xml
* application/zip
* application/zstd (.zst)
* audio/mpeg
* audio/ogg
* image/apng
* image/gif
* image/jpeg
* image/png
* image/svg+xml (.svg)
* multipart/form-data
* text/css
* text/csv
* text/html
* text/php
* text/plain
* text/xml
* chemical/x-mdl-molfile

## MIME-Sniffing

Fehlt die Angabe des MIME-Typs, soll das MIME-Sniffing den MIME-Typ erkennen. Dazu werden zunächst die ersten Bytes des Dokuments gelesen. Bilder im Format JPEG oder PNG sind leicht an ihrem Header zu unterscheiden (Magische Zahl). Schlägt die Analyse fehl, wird die Dateiendung herangezogen. Danach wird entweder eine Standard-Darstellung versucht, beispielsweise die Wiedergabe als HTML-Datei, oder die Wiedergabe wird mit einer Fehlermeldung abgebrochen.
Die Reihenfolge der Analyse wird in Protokolldokumenten festgelegt. So fordert das HTTP1.1-Dokument, dass immer der angegebene Content-Typ zu verwenden ist. Nur wenn er fehlt, darf MIME-Sniffing den Typ erraten.