Der Martin: php-Datei in HTML

Beitrag lesen

Hallo Rolf,

Der Browser könnte sich für die Endung interessieren, wenn der Server keinen Content-Type liefert. Das ist zum Beispiel der Fall, wenn man auf dem lokalen Dateisystem unterwegs ist (file:///...).

vermutlich ist das so, ich hab's aber schon lange nicht mehr ausprobiert. Es gab allerdings vor vielen Jahren mal IrgendEinen sehr verbreiteten Browser, der selbst bei HTTP-Ressourcen den Content-Type als sekundäre Information betrachtet und sich stattdessen erstmal den Inhalt angesehen hat. Kam da zum Beispiel ein Dokument mit dem Content-Type text/plain, das aber irgendwo in den ersten paar Zeichen "<html" enthielt, hat er das Dokument trotzdem als HTML geparst und dargestellt.

Diesem Browser haben wir es auch zu verdanken, dass bis heute noch viele Webautoren PDFs oder auch Videos in ein Archiv verpacken (auch wenn die Kompression bei diesen Medientypen wenig bis gar keinen Nutzen bringt), nur weil sie "von damals" noch wussten, dass der Browser (IE) das Dokument sonst anzuzeigen versucht, anstatt zu speichern.

Der Server sollte (muss aber nicht) und der Empfänger könnte (muss aber auch nicht). Interessanterweise steht da aber nicht, dass der Empfänger den URI analysieren kann (sprich: Dateiname suchen und Endung finden). Er kann den Inhalt analysieren. Meine Erfahrung ist aber, dass zumindest bei Zugriffen auf's lokale Dateisystem die Endung gedeutet wird. Eine .html-Datei, die ich in .txt umbenenne, wird als einfacher Text angezeigt.

Teils, teils. Linux führt den Content-Type auch im Dateisystem als Metainformation mit bzw. bestimmt ihn anhand verschiedener Kriterien, darunter die Namensendung, aber auch bestimmte charakteristische Inhalte (magic numbers).

Wenn ich auf meinem Rechner eine leere Datei anlege und sie demo.mp4 nenne, dann zeigt mein Dateimanager als Mime-Typ text/plain an. Von der Endung her müsste es eigentlich ein Video sein, Linux kann das aber nicht am Header oder an markanten Bytefolgen verifizieren und fällt daher auf einen unverfänglichen Typ zurück.
Windows richtet sich dagegen ausschließlich nach der Endung und zeigt auch eine 0-Byte-Datei als Videodatei an, wenn sie auf .mp4 endet.

[PHP] generiert meines Wissens automatisch text/html als Content-Type, es sei denn, du setzt explizit einen anderen Content-Type.

Korrekt.

Live long and pros healthy,
 Martin

--
Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.