Apropos ContentType(s) von image/x-png

Apropos ContentType(s) von image/x-png
Dies führte auch dazu, dass PNG-Dateien nicht hochgeladen werden konnten (später suchte ich nach den Informationen und stellte fest, dass ich den falschen Registrierungsort gefunden hatte). Nach meinen eigenen Tests sind die Ergebnisse wie folgt:

IE6

Internet Explorer 8.0

Chrom

Feuerfuchs

png

Bild/x-png

Bild/x-png

bild/png

bild/png

jpg

Bild/pjpeg

bild/jpeg

bild/jpeg

bild/jpeg

jpeg

Bild/pjpeg

Bild/pjpeg

bild/jpeg

bild/jpeg

bmp

Bild/bmp

Bild/bmp

Bild/bmp

Bild/bmp

Im Vergleich dazu entspricht der von Chrome und FireFox angezeigte ContentType eher der tatsächlichen Antwort. Warum also gibt es diese Unterschiede?

  1. Lassen Sie uns zunächst über den MIME-Typ sprechen:

Der MIME-Typ ist eine Möglichkeit, eine Datei mit einer bestimmten Erweiterung so festzulegen, dass sie mit einer bestimmten Anwendung geöffnet werden kann. Wenn auf eine Datei mit dieser Erweiterung zugegriffen wird, verwendet der Browser automatisch die angegebene Anwendung, um sie zu öffnen. Es wird hauptsächlich verwendet, um einige vom Client definierte Dateinamen und einige Methoden zum Öffnen von Mediendateien anzugeben.

Der vollständige Name von MIME auf Englisch lautet „Multipurpose Internet Mail Extensions“. Es handelt sich um ein Mehrzweck-Internet-Mail-Erweiterungsprotokoll. Es wurde erstmals 1992 für E-Mail-Systeme verwendet, später jedoch auch für Browser. Der Server teilt dem Browser mit, welche Art von Multimediadaten er sendet, und die Benachrichtigungsmethode besteht darin, den MIME-Typ der Multimediadaten zu erläutern, sodass der Browser weiß, bei welchen der empfangenen Informationen es sich um MP3-Dateien, bei welchen um Shockwave-Dateien usw. handelt. Der Server fügt in die übertragenen Daten die MIME-Kennung ein, um dem Browser mitzuteilen, welches Plug-In zum Lesen der zugehörigen Datei verwendet werden soll.

MIME kann E-Mail-Nachrichten in verschiedenen Formaten unterstützen, beispielsweise Nicht-ASCII-Zeichen und binäre Anhänge. Dieser Standard ist in RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049 usw. definiert. RFC 2822, das von RFC 822 abgeleitet wurde, legt fest, dass E-Mail-Standards die Verwendung von Zeichen außerhalb des 7-Bit-ASCII-Zeichensatzes in E-Mail-Nachrichten nicht zulassen. Aus diesem Grund können einige Nachrichten, die nicht aus englischen Zeichen bestehen, und andere Nachrichten als Text, wie etwa Binärdateien, Bilder, Töne usw., nicht per E-Mail übertragen werden. MIME spezifiziert symbolische Methoden zur Darstellung verschiedener Datentypen.

Nachdem der Browser die Datei empfangen hat, ruft er das Plug-In-System auf, um zu suchen und herauszufinden, welches Plug-In die empfangene Datei erkennen und lesen kann. Wenn der Browser nicht weiß, welches Plug-In-System aufgerufen werden soll, teilt er dem Benutzer möglicherweise mit, dass ein Plug-In fehlt, oder wählt einfach ein vorhandenes Plug-In aus, um zu versuchen, die empfangene Datei zu lesen, was zu einem Systemabsturz führen kann. Die möglichen Folgen fehlender MIME-Kennungen in übertragenen Informationen sind schwer abzuschätzen, da es bei manchen Computersystemen zu keinerlei Problemen kommen kann, manche Rechner dadurch jedoch abstürzen können.

Wenn die Ausgabe an den Browser gesendet wird, muss der Browser die entsprechende Anwendung starten, um das Ausgabedokument zu verarbeiten. Dies kann mithilfe verschiedener MIME-Typen (Multipurpose Internet Mail Extensions) erfolgen. In HTTP wird der MIME-Typ im Content-Type-Header definiert.

Angenommen, Sie möchten einem Kunden eine Microsoft Excel-Datei senden. Der MIME-Typ lautet dann zu diesem Zeitpunkt „application/vnd.ms-excel“. In den meisten praktischen Fällen wird diese Datei dann zur Verarbeitung an Excel übergeben (vorausgesetzt, wir legen Excel als Anwendung für die Verarbeitung des spezifischen MIME-Typs fest). In ASP erfolgt die Methode zum Festlegen des MIME-Typs über die ContentType-Eigenschaft des Response-Objekts.

  1. Analyse von MIME-Typen im IE:

In Microsoft Internet Explorer 4.0 und höher erfolgt die MIME-Typbestimmung über die FindMimeFromData -Methode des URL-Monikers. Durch die Identifizierung des MIME-Typs können URL-Moniker und andere Komponenten den richtigen Objektserver oder die richtige Anwendung finden und starten, um den zugehörigen Inhalt zu verarbeiten.

Der vom Server bereitgestellte MIME-Typ, falls verfügbar

Eine Untersuchung der tatsächlichen Inhalte, die mit einer heruntergeladenen URL verknüpft sind

Der mit dem heruntergeladenen Inhalt verknüpfte Dateiname (wird vermutlich von der verknüpften URL abgeleitet)

Während des Downloads geltende Registrierungseinstellungen (Dateinamenerweiterung/MIME-Typzuordnungen oder registrierte Anwendungen)

Registrierungsstandorte

Von FindMimeFromData verwendeter Speicherort zum Ermitteln des MIME-Typs und der ProgID anhand der Dateinamenerweiterung:

HKEY_CLASSES_ROOT\.***
Von FindMimeFromData verwendeter Speicherort zum Suchen von Anwendungen anhand der ProgID:

HKEY_CLASSES_ROOT\<ProgId>\shell\open\command
Von URL-Monikern verwendeter Speicherort zum Suchen von CLSIDs aus MIME-Typen:

HKEY_CLASSES_ROOT\MIME\Database\Inhaltstyp

Der Zweck der MIME-Typerkennung bzw. des Daten-Sniffings besteht darin, den MIME-Typ (auch Inhaltstyp oder Medientyp genannt) heruntergeladener Inhalte anhand von Informationen aus den folgenden vier Quellen zu bestimmen:

Spezifische Informationen finden Sie in der MSDN-Dokumentation:

http://msdn.microsoft.com/zh-cn/library/ms775147(v=VS.85).aspx für Informationen zum MIME-Typ-Erkennungsalgorithmus, zur Funktion FindMimeFromData und zum Abschnitt „Hochgeladene MIME-Typen“.

  1. Warum steht vor image/x-png ein x-:

Es gibt im Internet eine spezielle Organisation IANA, die standardmäßige MIME-Typen bestätigt. Das Internet entwickelt sich jedoch zu schnell und viele Anwendungen können nicht darauf warten, dass IANA bestätigt, dass die von ihnen verwendeten MIME-Typen Standardtypen sind. Daher verwenden sie die Methode, die Kategorie mit x- zu beginnen, um anzuzeigen, dass diese Kategorie noch kein Standard ist, zum Beispiel: x-gzip, x-tar usw. Tatsächlich werden diese Typen so häufig verwendet, dass sie zum De-facto-Standard geworden sind. Solange sowohl der Client als auch der Server den MIME-Typ erkennen, spielt es keine Rolle, auch wenn es sich um einen nicht standardmäßigen Typ handelt. Das Clientprogramm kann bestimmte Verarbeitungsmethoden verwenden, um die Daten basierend auf dem MIME-Typ zu verarbeiten. In Webservern und Browsern (einschließlich Betriebssystemen) sind standardmäßig standardmäßige und gängige MIME-Typen eingestellt. Nur für ungewöhnliche MIME-Typen müssen Sie sowohl den Server- als auch den Client-Browser zur Identifizierung einrichten.

Es gibt hier eine Diskussion zu image/x-png: http://stackoverflow.com/questions/2086374/what-is-the-difference-between-image-png-and-image-x-png .

<<:  Detaillierte Erläuterung des Docker-Visualisierungsgrafiktools Portainer

>>:  Syntax-Alias-Problem basierend auf Löschen in MySQL

Artikel empfehlen

5 Gründe, warum sich Responsive Webdesign nicht lohnt

Dieser Artikel stammt aus Tom Ewers Managewp-Blog ...

Standardmäßige Stilanordnung für HTML-Tags

html, address,blockquote,body, dd, div,dl, dt, fie...

Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Überprüfen Sie die Transaktionsisolationsebene In...

Lösen Sie das Problem der unsicheren Docker x509-Registrierung

Nach der Installation von Docker trat beim Versuc...

Vue implementiert die Tabellenpaging-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Drei JavaScript-Methoden zur Lösung des Joseph-Ring-Problems

Inhaltsverzeichnis Überblick Problembeschreibung ...

Das native VIDEO-Tag der HTML-Seite verbirgt die Download-Button-Funktion

Beim Schreiben eines Webprojekts stieß ich auf ei...

JS-Implementierung des Apple-Rechners

In diesem Artikelbeispiel wird der spezifische JS...

So konvertieren Sie ein JavaScript-Array in eine Baumstruktur

1. Nachfrage Das Backend stellt solche Daten bere...

JavaScript implementiert schnell Kalendereffekte

In diesem Artikelbeispiel wird der spezifische Ja...

uni-app implementiert NFC-Lesefunktion

In diesem Artikel wird der spezifische Code der U...