Leider haben die Browserhersteller den weitgehend kaputt gemacht, sonst könnte man z.B. herausfinden ob image/png unterstützt wird oder nicht, aber auch so könnte man noch damit arbeiten, tut bloss kaum jemand.
Ich bastele ab und zu mal ein bißchen an einem Artikel über Content negotiation, der vielleicht mal in SELFAKTUELL erscheinen könnte:
Die Beschreibung dessen, was der Browser an Wünschen gesendet hat, ist auch über Variablen der
CGI-Schnittstelle ansprechbar:
- HTTP_ACCEPT stellt Informationen über die akzeptierten MIME-Typen im empfangenen HTTP-Header zur Verfügung. (Das scheinen alle bekannten Browser zu senden, auch Netscape 3 und Microsoft 2; Netscape 4.5 sendet hier beispielsweise, daß er schon die MIME-Typen img/pjpeg und img/png kennt.)
- HTTP_ACCEPT_CHARSET enthält ggf. akzeptierte Zeichensätze. (Netscape 4.5 sendet hier einen Wert.)
- HTTP_ACCEPT_ENCODING enthält ggf. akzeptierte Codierungen, also z. B. die Angabe, daß der Browser auch spezielle (z. B. komprimierte) Datenformate verarbeiten kann usw. (Netscape 4.5 akzeptiert beispielsweise schon das encoding gzip, Microsoft Internet Explorer 5 zusätzlich auch noch deflate.)
- HTTP_ACCEPT_LANGUAGE enthält ggf. akzeptierte Landessprachen.
Diese Variablen sind in der CGI-Norm *nicht* explizit spezifiziert. Statt dessen liest CGI alles, was im HTTP-Header kommt, ersetzt '-' durch '_' in Variablennamen, fügt jeweils die Zeichenkette HTTP_ davor und setzt es ins
Environment. (Wie die Variablen heißen werden, das kann man dem genormten Aufbau des HTTP-Headers
entnehmen.)