MIME-Type: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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]]

Version vom 27. November 2023, 13:35 Uhr

MIME-Types klassifizieren Daten im Rumpf einer Nachricht im Internet.

topic - Kurzbeschreibung

Beschreibung

Anhang

Siehe auch


Links

Weblinks