Mime-Typen

Mime steht für Multipurpose Internet Mail Extensions und klassifiziert die Daten im Rumpf einer Nachricht im Internet. Aus dem Namen geht hervor, dass das, was da spezifziert wird, ursprünglich für E-Mails gedacht war - und zwar für E-Mails mit Attachments (englisch für Anhang). Solche so genannten Multipart-Mails enthalten die gesamten zu übertragenden Daten in einer Datei. Innerhalb der Datei musste eine Konvention gefunden werden, wie die einzelnen Teile (z.B. Text der Mail und angehängte ZIP-Datei) voneinander zu trennen seien. Dabei wurde auch ein Schema entwickelt, das der interpretierenden Software mitteilt, um welchen Datentyp es sich bei dem jeweils nächsten Teil der Mail handelt.

 

Das Schema erwies sich nicht nur für E-Mails als nützlich. Fast immer, wenn entfernte Programme (z.B. Web-Browser und Web-Server) wegen einer bevorstehenden Datenübertragung miteinander kommunizieren, geht es auch um die Art der zu übertragenden Daten. Dabei hat sich im gesamten Internet das Schema der Mime-Typen durchgesetzt.

 

Ein Mime-Type besteht aus zwei Teilen: der Angabe eines Medientyps und der Angabe eines Subtyps. Beide Angaben werden durch einfachen Schrägstrich voneinander getrennt. Beispiele: text/html, image/gif.

Bei den Medientypen gibt es folgende:

  • text = für Textdateien
  • image = für Grafikdateien
  • video = für Videodateien
  • audio = für Sounddateien
  • application = für Dateien, die an ein bestimmtes Programm gebunden sind
  • multipart = für mehrteilige Daten
  • message = für Nachrichten
  • model = für Dateien, die mehrdimensionale Strukturen repräsentieren

Subtypen für server-eigene Dateiformate, d.h. Dateitypen, die auf dem Server ausgeführt werden können, werden meist mit x- eingeleitet.

Das Schema der Mime-Types wird in den Requests for Comments (RFCs) mit den Nummern 2045, 2046 und 2077 festgelegt.

 

Verschiedene HTML-Elemente haben Attribute, die als Wertzuweisung die Angabe eines Mime-Typen erwarten, nämlich a (type=), form (accept= und enctype=), input (accept=), link (type=, object (codetype= und type=), param (type=), script (type=) und style (type=). Wenn ein CGI-Script an den aufrufenden Browser einen HTTP-Header sendet, muss es den Mime-Type der nachfolgenden Daten senden. In JavaScript gibt es ein eigenes Objekt MimeTypes, das es erlaubt, in JavaScript die verfügbaren Mime-Typen des Browsers zu ermitteln. Sowohl jeder Web-Browser als auch jeder Web-Server führen eine Liste mit ihnen bekannten Mime-Typen. Bei der Kommunikation müssen sie sich darauf einigen, ob der Empfänger den Mime-Type akzeptiert, den der Sender senden will. Moderne Browser akzeptieren zwar in der Regel jeden Mime-Type und bieten dem Anwender einfach an, falls sie den Mime-Typ nicht kennen, die zu empfangenden Daten als Download-Datei abzuspeichern. Web-Server sind dagegen meist empfindlicher. Mime-Typen, die sie nicht kennen, verarbeiten sie nicht. Gerade wenn auf dem Server-Rechner nicht alltägliche Dateiformate bereitgestellt werden, ist es wichtig, den Mime-Type dafür in der Konfiguration des Web-Servers zu notieren.

 

Bei Standard-Dateiformaten sollten Sie unbedingt die Mime-Type-Angaben verwenden, die dafür etabliert sind. Wenn Sie trotz Recherchen, zum Beispiel im IANA- Verzeichnis der Media-Typen keinerlei Anhaltspunkte dafür finden, ob es zu einem Dateiformat einen bereits etablierten Mime-Type gibt, können Sie selber einen festlegen. Gleiches gilt für völlig eigene Dateiformate.