MIME-Typ

Die Abkürzung MIME-Typ bedeutet “Multipurpose Internet Mail Extensions”, heutzutage spricht man oft von Internet Media Type.

MIME-Typen wurden ursprünglich für E-Mails mit Anhang genutzt. Später wurde dieses Schema auf die Kommunikation zwischen Webserver und Browser angepasst. Der MIME-Typ gibt an, um welche Art, bzw. Klasse es sich bei den gesendeten Daten handelt. Bei einer HTTP-Übertragung gibt der MIME-Typ des Webservers an, welche Art von HTTP-Daten er dem Browser sendet. Der Browser liest die MIME-Daten und schaut, welche Anwendung für die Datei in Frage kommt. Einige Anwendungen sind im Browser schon vorhanden, andere müssen hingegen erst extern geladen werden. Jeder Browser und jeder Server hat eine Liste mit ihnen bekannten MIME-Typen. Beim Senden von Dateien müssen sich Browser und Server einigen, ob die ihm bekannten MIME-Typen miteinander übereinstimmen. Die heutigen Browser kennen gewöhnlich jeden MIME-Typ. Wenn ein Browser einen MIME-Typen nicht erkennt, bietet er dem Nutzer einen Download der Datei an und diese abzuspeichern. Der Browser schlägt dem Nutzer dann geeignete Programme zum laden der Datei vor. Webserver hingegen verarbeiten keine Dateien, von denen sie die MIME-Typen nicht kennen.

Ein MIME-Typ besteht aus dem Medientyp und dem Subtypen.Die Angaben werden mit einem Schrägstrich („/“) voneinander getrennt. Der Medientyp gibt die Gruppe der Datei an. Es gibt folgende Medientypen:

  • text – Textdatei
  • image – Grafik/Bild
  • video – Videodatei
  • audio – Musik/Sound-Datei
  • application – Dateien, die an ein bestimmtes Programm gebunden sind
  • message – Nachricht
  • multipart – mehrteilige Datei
  • model – Daten, die mehrdimensionale Strukturen repräsentieren

Der Subtype gibt genau an, um welche Art es sich bei der Datei handelt.

text/html => HTML-Dokument
image/png => Bild im PNG Format
application/xml => XML Dokument

Die Medientypen werden von der IANA (Internet Assigned Numbers Authority) verwaltet und sind hier einsehbar: http://www.iana.org/assignments/media-types/media-types.xhtml

 

Die meist genutzten MIME-Typen

Die häufigst verwendeten MIME-Typen findest du in der folgenden Tabelle. Viele weitere findest du auf der Webseite von IANA. Die mit x- beginnenden Subtypen, z.B. application/x-javascript, sind Dateien, die auf dem Server ausgeführt werden.

MIME-Typ Beschreibung/Erklärung
application/gzip GNU Zip-Dateien
application/msexcel Microsoft Excel Dateien
application/mspowerpoint Microsoft Powerpoint Dateien
application/msword Microsoft Word Dateien
application/octet-stream Ausführbare Dateien
application/pdf Adobe PDF-Dateien
application/postscript Adobe Postscript-Dateien
application/rtf Microsoft RTF-Dateien
application/x-javascript serverseitige JavaScript-Dateien
application/x-httpd-php PHP-Dateien
application/zip ZIP-Archivdateien
audio/x-pn-realaudio RealAudio-Dateien
audio/x-pn-realaudio-plugin RealAudio-Plugin-Dateien
audio/x-qt-stream Streaming-Dateien
audio/x-wav Wav-Dateien
image/gif GIF-Dateien
image/jpeg JPEG-Dateien
image/tiff TIFF-Dateien
multipart/alternative mehrteilige Daten gemischt
multipart/byteranges mehrteilige Daten mit Byte-Angaben
multipart/digest mehrteilige Daten / Auswahl
multipart/encrypted mehrteilige Daten verschlüsselt
multipart/form-data mehrteilige Daten aus HTML-Formular (z.B. File-Upload)
multipart/mixed mehrteilige Daten gemischt
text/css CSS Stylesheet-Dateien
text/html -Dateien
text/javascript JavaScript-Dateien
text/plain reine Textdateien
video/mpeg MPEG-Dateien
video/quicktime Quicktime-Dateien
video/x-msvideo Microsoft AVI-Dateien

 

Warum ist es wichtig, den richtigen MIME-Typ im HTTP-Response-Header zu setzen?

Im Fall, dass der MIME-Typ die Art des Dokuments falsch beschreibt, wird die Datei mit anderen Anwendungen bearbeitet und ausgegeben. Gibt man im einem HTML-Dokument an, dass es sich um ein Bild handelt (image/jpeg => JPEG-Datei), wird die HTML-Datei als Bild und nicht wie ein HTML-Dokument ausgegeben. Der MIME-Typ dient als erste Kommunikation zwischen Webserver und Client (Browser). Ein falscher MIME-Typ, der die Klasse der Datei nicht richtig wiedergibt, kann zu einer Fehlermeldung und einem Abbruch der Übertragung führen.

 

Wie wird der MIME-Typ im HTTP-Response-Header gesetzt?

Im folgenden Beispiel siehst du den Header einer HTTP-Antwort vom Server. Der Content-Type gibt an, um welchen MIME-Typ es sich handelt und dass das Dokument ein Text im HTML-Format ist.

HTTP/1.x 200 OK
Date: Fri, 04 Sep 2009 18:12:35 GMT
Server: Apache/1.3.34 Ben-SSL/1.55
Keep-Alive: timeout=2, max=200
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

 

Was kann passieren, wenn der MIME-Typ falsch gesetzt wird?

Wenn der MIME-Typ nicht gesetzt oder falsch gesetzt wurde, versucht der MIME-Parser (auch MIME-Sniffer genannt) den MIME-Typ zu entschlüsseln. Der Sniffer liest zunächst die ersten Bytes des Dokuments. Wenn es sich bei der Datei um eine PNG- oder JPEG-Datei handelt, wird er diese am Header erkennen. Kommt der Parser dabei zu keinem Ergebnis, liest er die Dateiendung. Schlägt dieser Erkennungsversuch ebenfalls fehl, wird die Datei zunächst als HTML-Datei wiedergegeben. Bei einem Fehlschlag wird die Datei nicht gesendet und es erscheint eine Fehlermeldung. Im Protokoll Dokument wird die Reihenfolge der Analyse festgehalten.

Wie setzt man den MIME-Typ ins HTML-Dokument?

Den MIME-Typ setzt man mit einem Meta-Tag im Header-Bereich des HTML-Dokuments.
Zusätzlich wird der charset angegeben, damit die Zeichenkodierung richtig aufgelöst werden kann.

<!DOCTYPE html>
<html lang=”de”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″>

</head>
<body> … </body>
</html>

Warum gibt man den MIME-Typ ebenfalls im HTML-Dokument an?

Die Meta-Informationen im HTML-Dokument werden mit dem Meta-Element bereitgestellt. Die Meta-Angaben sollen das Parsen der Seite/Datei erleichtern, indem man dem Browser einen Hinweis gibt, wie er die Datei behandeln soll. Vor dem Erzeugen der HTTP-Antwort vom Server werden die Daten gelesen und in die Kopfzeile eingebaut. Wenn die Informationen im Header des HTTP-Dokuments schon enthalten sind, werden die Angaben des Clients, die in einem Meta-Element geschrieben sind, bei einer Abweichung bevorzugt. Im HTML-Dokument kann man Elemente, wie Skripte, Links und Parameter, mit dem Attribut „type“ versehen und einen Datentypen bestimmen, um das Parsen zu erleichtern.
Aus SEO-Sicht ist es empfehlenswert den MIME-Typ im Header zu deklarieren und sie MIT dem Dokument zu übergeben, damit bestimmte Dateitypen auf dem Server oder dem Client mit bestimmten Anwendungen geladen werden können.