|
|
Zeile 1: |
Zeile 1: |
| '''MIME-Types''' klassifizieren Daten im Rumpf einer Nachricht im [[Internet]]. | | '''MIME-Types''' klassifizieren Daten im Rumpf einer Nachricht im [[Internet]]. |
| | |
| '''topic''' - Kurzbeschreibung | | '''topic''' - Kurzbeschreibung |
| == Beschreibung == | | == Beschreibung == |
Zeile 29: |
Zeile 30: |
| * [https://wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht Übersicht von MIME-Typen mit den entsprechenden Dateiendungen] im [[SELFHTML]]-Wiki | | * [https://wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht Übersicht von MIME-Typen mit den entsprechenden Dateiendungen] im [[SELFHTML]]-Wiki |
| * [http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types Apache Server: Zuordnung von Dateiendungen zu MIME-Typen, von 1999 bis heute] | | * [http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types Apache Server: Zuordnung von Dateiendungen zu MIME-Typen, von 1999 bis heute] |
|
| |
| == Beschreibung ==
| |
| * 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 [[Hypertext Transfer Protocol|HTTP]]-Übertragung einem [[Webbrowser|Browser]] mitgeteilt, welche Daten der [[Webserver]] sendet – ob es etwa ein [[Plain text|Plain-Text]]-Dokument, ein [[Hypertext Markup Language|HTML]]-Dokument oder ein [[Portable Network Graphics|PNG]]-Bild ist.
| |
| * Auch in [[E-Mail]]s wird das „Content-Type“-Header-Feld dazu verwendet, die verschiedenen Daten zu klassifizieren.
| |
|
| |
| === Multipurpose Internet Mail Extensions ===
| |
| ==== 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
| |
|
| |
| # Angabe eines Medientyps
| |
| # 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]].
| |
|
| |
| ==== 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.
| |
| {| class="wikitable"
| |
| !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.
| |
| {| class="wikitable"
| |
| !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
| |
| |<nowiki>-Dateien</nowiki>
| |
| |-
| |
| |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:
| |
|
| |
| <code>Typ "/" [Baum "."] Subtyp ["+" Suffix] *[";" Parameter]</code>
| |
|
| |
| '''Häufige Beispiele'''
| |
| * <code>application/graphql</code>
| |
| * <code>application/javascript</code>
| |
| * <code>application/json</code>
| |
| * <code>application/ld+json</code>
| |
| * <code>application/feed+json</code>
| |
| * <code>application/msword</code> (.doc)
| |
| * <code>application/pdf</code>
| |
| * <code>application/sql</code>
| |
| * <code>application/vnd.api+json</code>
| |
| * <code>application/vnd.ms-excel</code> (.xls)
| |
| * <code>application/vnd.ms-powerpoint</code> (.ppt)
| |
| * <code>application/vnd.oasis.opendocument.text</code> (.odt)
| |
| * <code>application/vnd.openxmlformats-officedocument.presentationml.presentation</code> (.pptx)
| |
| * <code>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</code> (.xlsx)
| |
| * <code>application/vnd.openxmlformats-officedocument.wordprocessingml.document</code> (.docx)
| |
| * <code>application/x-www-form-urlencoded</code>
| |
| * <code>application/xml</code>
| |
| * <code>application/zip</code>
| |
| * <code>application/zstd</code> (.zst)
| |
| * <code>audio/mpeg</code>
| |
| * <code>audio/ogg</code>
| |
| * <code>image/apng</code>
| |
| * <code>image/gif</code>
| |
| * <code>image/jpeg</code>
| |
| * <code>image/png</code>
| |
| * <code>image/svg+xml</code> (.svg)
| |
| * <code>multipart/form-data</code>
| |
| * <code>text/css</code>
| |
| * <code>text/csv</code>
| |
| * <code>text/html</code>
| |
| * <code>text/php</code>
| |
| * <code>text/plain</code>
| |
| * <code>text/xml</code>
| |
|
| |
| === 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 File Interchange Format|JPEG]] oder [[Portable Network Graphics|PNG]] sind leicht an ihrem Header zu unterscheiden ([[Magische Zahl (Informatik)|Magische Zahl]]).
| |
| * Schlägt die Analyse fehl, wird die [[Dateinamenserweiterung|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 [[Hypertext Transfer Protocol|HTTP1.1]]-Dokument, dass immer der angegebene Content-Typ zu verwenden ist.
| |
| * Nur wenn er fehlt, darf MIME-Sniffing den Typ erraten.
| |
|
| |
|
| [[Kategorie:Netzwerk/Protokoll]] | | [[Kategorie:Netzwerk/Protokoll]] |