Thomas Luethi: Werden Meta-Tags irgendwo zu HTTP-Headern?

Beitrag lesen

Hallo,

Heraus gekommen ist folgendes, der mime-typ in meinem meta-tag wird einfach ignoriert.

Das erstaunt mich ueberhaupt nicht.

Ich weiss nicht, warum die Leute so geil sind auf Meta-Tags,
wenn es offensichtlich um Dinge geht, fuer die eigentlich
der Server zustaendig ist (HTTP-Header).

Und ich fragte mich, woher der (Aber)Glaube kommt, dass Meta-Tags
das Verhalten eines Webservers beeinflussen koennten...

Ich habe mich also auf die Suche gemacht und wieder
mal etwas dazu gelernt...

1. Beschreibung von META in HTML 3.2
http://www.w3.org/TR/REC-html32#meta
   "HTTP servers may use the property name specified
   by the HTTP-EQUIV attribute to create an
   RFC 822 style header in the HTTP response"

2. Beschreibung von META in HTML 4.01
http://www.w3.org/TR/html401/struct/global.html#edef-META
  "HTTP servers may use the property name specified
   by the http-equiv attribute to create an
   RFC822-style header in the HTTP response."
http://www.w3.org/TR/html401/struct/global.html#adef-http-equiv
  "http-equiv
   This attribute may be used in place of the name attribute.
   HTTP servers use this attribute to gather information for
   HTTP response message headers."
Das klingt, als ob alle Webserver das auch wirklich taeten.
Aber es steht AFAIK nirgends, dass sie es tun _muessen_ oder auch
nur _sollten_.

3. XHTML 1.0 Spec., Appendix C.9
http://www.w3.org/TR/xhtml1/#C_9
  "Note: be aware that if a document must include the character
   encoding declaration in a meta http-equiv statement, that
   document may always be interpreted by HTTP servers and/or
   user agents as being of the internet media type defined
   in that statement."

Ich fand also keine offizielle Stelle, die sagt,
dass ein HTTP-Server die Meta-Tags in HTML-Dateien
beachten _muss_ (MUST) oder auch nur _sollte_ (SHOULD).
Stets ist nur die Rede von _kann/darf_ (MAY).

(In den zitierten Texten sind die Woerter _nicht_
grossgeschrieben, aber in den Einleitungen von
HTML 4.01 und XHTML 1.0 steht, dass sie trotzdem
gemaess RFC 2119 oder sinngemaess gemeint sind.)

In zahlreichen Aussagen zu Meta-Tags in SelfHTML
klingt es so, als ob man damit tatsaechlich das
Verhalten von vielen Webservern steuern koenne,
wobei das auch gleich wieder relativiert wird:
http://selfhtml.teamone.de/html/kopfdaten/meta.htm#allgemeines
   "Als Autor der HTML-Datei können Sie auf diese Weise also
    die Kommunikation zwischen Web-Server und Web-Browser
    beeinflussen. Inwieweit Angaben dieser Art etwas bewirken,
    hängt also vom Web-Server ab bzw. davon, ob er diese Daten
    vor dem Übertragen der Datei an den Browser ausliest oder nicht."

Gemaess meinen Tests ignoriert zumindest der (weit verbreitete)
Apache 1.3.x die Meta-Tags (z.B. das Beispiel aus der
HTML 4.01 Specification), d.h. er macht daraus keine
HTTP-Header.

Es nimmt mich wunder, ob ueberhaupt ein real existierender
Webserver wirklich in die HTML-Dateien reinguckt und aus
den Meta-Tags HTTP-Header macht.

Ist es nämlich eine .html datei, die ich aufrufe, ist der content-type im http-header "text/html" laut der HTTP HEAD Service Seite. Ist die Dateiendung aber xhtml, ist der content-type "application/xhtml+xml".

Das liegt vermutlich an der Server-Konfiguration.

In beiden Fällen hatte ich in meinem meta-tag aber "text/html" stehen.

IMHO irrelevant.

Nun wird aber meine Seite nur dann richtig interpretiert (nicht geschlossene Tags führen zu Fehler des XML-Parsers zum Beispiel) wenn der content-type "application/xhtml+xml" ist,

Ob das "richtig" ist, sei mal dahingestellt.

_Du_ moechtest, dass Dein XHTML "streng" behandelt wird.

Und dass der MS IE es zum Download anbietet, statt
das Dokument anzuzeigen...

Zur Frage, mit welchem Content-Type man XHTML ausliefern sollte,
stehen ein paar Links im bereits genannten Thread: [pref:t=77771&m=449928]

ist der content-type nur "text/html", stören nicht-xhtml konforme Ausdrücke nicht, wie zum Beispiel die nicht geschlossenen Tags.

text/html wird von den Browsern als Tag-Soup interpretiert
und dementsprechend versuchen sie, moeglichst viele Fehler
zu tolerieren...

Wie krieg ich jetzt den content-type "application/xhtml+xml" im http-header hin ohne die Endung xhtml nutzen zu müssen, sondern zum Beispiel mit der Endung .html oder .php ?

Das schrieb ich doch schon in [pref:t=77822&m=450035]

RTFM.
Wenn es ein Apache ist, kannst Du meist mit AddType in der
.htaccess den MIME-Type bestimmen.

http://httpd.apache.org/docs/mod/mod_mime.html#addtype
http://httpd.apache.org/docs-2.0/mod/mod_mime.html#addtype

Wenn Du endlich die URL oder wenigstens den
Server-Typ verraten wuerdest, muessten wir
weniger glaskugeln...

Gruesse,

Thomas