MIME-Type

Aus Foxwiki

MIME-Types - Klassifizieren von Daten im Rumpf einer Nachricht

Beschreibung

Multipurpose Internet Mail Extensions
  • 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 etwa 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.
MIME ist die Abkürzung für Multipurpose Internet Mail Extensions

Es handelt sich um eine Codierung, die den Anwendungsprogrammen im Internet einen Hinweis auf den verwendeten Datentyp geben soll.

  • Ursprünglich wurde dieses Schema für Datei-Anhänge (Attachments) in E-Mails eingeführt.
  • Innerhalb dieser Multipart-Mails trennt MIME die Datei vom Rest der E-Mail und gibt den empfangenden E-Mail-Clients einen Hinweis auf den Datentyp.
  • Diese Information ist wichtig, damit der Empfänger weiß, mit welchem Programm er die Datei öffnen kann.

Was sich für E-Mails als nützlich erwiesen hat, wurde dann für andere Protokolle eingeführt, die zwischen zwei Stationen Daten übertragen.

  • So haben verschiedene HTML-Elemente Attribute, die den MIME-Type als Angabe enthalten.
  • Auch im HTTP-Header hat der MIME-Type seinen Platz gefunden.
  • Sowohl der Browser, als auch der Web-Server führen eine Liste mit ihren bekannten MIME-Types.
  • Bei jeder Kommunikation zwischen Browser und Web-Server wird der MIME-Type ausgehandelt.
  • In der Regel akzeptiert ein Browser jeden MIME-Type.
  • Kennt er ihn nicht, bietet er dem Anwender den Download dieser Datei an.
  • Der Anwender kann sich dann später entscheiden, welches Programm für die Datei geeignet ist.

Ursprünglich konnte man mit SMTP in E-Mails nur Buchstaben, Zahlen und Zeichen versenden.

  • Mit MIME werden die Dateien in Buchstaben und Zeichen umgewandelt und beim Empfänger wieder zurückgewandelt.

Medientypen

Internet Media Type besteht aus zwei Teilen

  1. Angabe eines Medientyps
  2. 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.

Medientypen und Subtypen

Der MIME-Type besteht aus der Angabe eines Medientyps und eines Subtyps, die durch einen Schrägstrich voneinander getrennt sind

text/html oder image/jpeg

Der Medientyp weist daraufhin, um welche Art es sich handelt.

  • Typische Beispiele sind Text, Bilder, Video und Audio.
Medientypen Beschreibung
text Dateien mit ASCII-Text
image Bilder, Grafiken, Fotos
video Video-Dateien
audio Audio-Dateien
application Dateien, die an ein bestimmtes Anwendungsprogramm gebunden sind
mulitpart mehrteilige Daten
message Nachrichten
model Dateien mit mehrdimensionalen Strukturen
example Beispiel-Medientyp für Dokumentationen

Aus dem Medientyp ergibt sich die Art der Datenstruktur, also ob die Datei Binär oder nach ASCII abgelegt sind.

  • Der Subtyp bezieht sich auf ein oder mehrere Dateiformate, die an ein bestimmtes Programm gebunden sind oder mit speziellen Programmen oder Plugins ausgeführt werden müssen.
  • Subtypen, die mit einem "x-" anfangen, sind Dateien, die auf einem Server ausgeführt werden.
  • Da es sehr viele MIME-Types gibt, ist die folgende Tabelle nur eine kleine Auswahl der wichtigsten und am häufigsten vorkommenden MIME-Types.
MIME-Type Dateiendung Beschreibung
application/gzip *.gz GNU Zip-Dateien
application/msexcel *.xls *.xla Microsoft Excel Dateien
application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien
application/msword *.doc *.dot Microsoft Word Dateien
application/octet-stream *.bin *.exe *.com *.dll *.class Ausführbare Dateien
application/pdf *.pdf Adobe PDF-Dateien
application/postscript *.ai *.eps *.ps Adobe Postscript-Dateien
application/rtf *.rtf Microsoft RTF-Dateien
application/x-javascript *.js serverseitige JavaScript-Dateien
application/x-httpd-php *.php *.phtml PHP-Dateien
application/zip *.zip ZIP-Archivdateien
audio/x-pn-realaudio *.ram *.ra RealAudio-Dateien
audio/x-pn-realaudio-plugin *.rpm RealAudio-Plugin-Dateien
audio/x-qt-stream *.stream Streaming-Dateien
audio/x-wav *.wav Wav-Dateien
image/gif *.gif GIF-Dateien
image/jpeg *.jpeg *.jpg *.jpe JPEG-Dateien
image/tiff *.tiff *.tif 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 CSS Stylesheet-Dateien
text/html *.htm *.html *.shtml -Dateien
text/javascript *.js JavaScript-Dateien
text/plain *.txt reine Textdateien
video/mpeg *.mpeg *.mpg *.mpe MPEG-Dateien
video/quicktime *.qt *.mov Quicktime-Dateien
video/x-msvideo *.avi Microsoft AVI-Dateien

Beispiel

Die folgenden Zeilen zeigen den Quelltext einer E-Mail.

[E-Mail-Header gekürzt]
From: "Sender" <sender@beispiel.org>
To: <empfaenger@beispiel.org>
Subject: =?ISO-8859-15?B?R3J13w==?=
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="=__Part466D9E30.0__="

--=__Part466D9E30.0__=
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Eine Foto im Anhang.

--=__Part466D9E30.0__=
Content-Type: image/jpeg; name="foto.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="foto.jpg"

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
[Anhang gekürzt]
RAQFCBcwRD8H6y8B+voDMoSa1I4Md6+UMzwKVdT31/fz4cotgwwoZDa1sbvrwU1QcEYNlI3KwKwZ
uiFj1Ka6BVAM2WU4FCh+xfXS1/p573//2Q==

--=__Part466D9E30.0__=--

Beispiel für MIME-Type in einem HTTP-Response (Antwort vom Server)

Die folgenden Zeilen zeigen den Header einer HTTP-Antwort vom Server.

  • Der Content-Type deutet daraufhin, welche Art von Daten folgen.
Beispiel 1: Text im HTML-Format
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
Beispiel 2: Bild im GIF-Format
HTTP/1.x 200 OK
Content-Length: 35
Date: Sun, 19 Jul 2009 17:30:00 GMT
Content-Type: image/gif

Namensgebung

Ein Medientype besteht aus einem Typ und einem Subtyp, die als Baum strukturiert sind.

  • Eine 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

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.


Anhang

Siehe auch


Links

Weblinks