Rolf B: php-Datei in HTML

Beitrag lesen

Hallo Schröder,

dass der Browser nur Dateien mit der Endung .html versteht.

Dem Browser ist die Endung zumeist total egal. Er interessiert sich viel mehr für den Content-Type, den ihm der Server per HTTP Header liefert.

Wenn der text/html ist, wird der gelieferte Inhalt als HTML Datei interpretiert. Wenn die Datei "welcome.html" heißt, der Server aber den Content-Type "image/png" liefert und ein Bild liefert, dann zeigt der Browser dieses Bild.

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:///...). Wenn eine http-Anfrage keinen Content-Type liefert, ist man der Gnade des Browsers überlassen, was dann passiert. Oder, wie es RFC7231 in der typischen IETF-Formulierung sagt:

A sender that generates a message containing a payload body SHOULD generate a Content-Type header field in that message unless the intended media type of the enclosed representation is unknown to the sender. If a Content-Type header field is not present, the recipient MAY either assume a media type of "application/octet-stream" or examine the data to determine its type.

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.

Auf dem Server sieht das anders aus. Der ist ja die entscheidene Instanz für den Content-Type, und dort kann man definieren, dass *.html mit Content-Type text/html auszuliefern ist. Bei einer PHP Datei ist das anders. Da wird nicht der Webserver gefragt, sondern PHP. Es generiert meines Wissens automatisch text/html als Content-Type, es sei denn, du setzt explizit einen anderen Content-Type.

Rolf

--
sumpsi - posui - obstruxi