Anzeige
Smartes Cloud Hosting für anspruchsvolle Projekte.
↬ Loslegen und Spaces testen ↬ Jetzt testen!
Rene Schmidt 22. September 2005

Dem HTTP-Header auf der Spur

Kein Beitragsbild

Webentwickler müssen mitunter tiefer in die Technik einsteigen als nur HTML zu basteln oder simple Skripte zu stricken. Soll eine Webseite oder etwas anderes per HTTP-Protokoll automatisiert verarbeitet werden, kann es Probleme geben: manchmal ist unter einer URL nicht das zu finden, was gesucht wird.

Anzeige

Ein Beispiel, das uns bei der Entwicklung unserer Favicon-Galerie begegnete: Man möchte das Favicon der Website „http://www.kde-apps.de/“ per PHP-Skript verarbeiten. Unter „http://www.kde-apps.de/favicon.ico“ ist die Symbol-Datei aber nicht zu finden. Dem Entwickler ist bekannt, dass der Webserver von „http://www.kde-apps.de/“ Anfragen mit einer Weiterleitung nach „http://de.kde-apps.org/“ beantwortet. Das Skript soll das selbst feststellen können, schließlich kann man nie wissen, welche problematischen URLs Nutzer dem Favicon-Skript zur Verarbeitung geben könnten. Außerdem ist ein Favicon nicht immer unter /favicon.ico einer Domain zu finden. Stattdessen kann es über ein <link>-Tag in der HTML-Seite referenziert sein. Der Webentwickler muss also zunächst die URL der Seite finden, auf der die URL des Favicons zu finden ist. Erst dann ist kann sein Skript die Symbol-Datei verarbeiten.

Auf zur Schnitzeljagd
Gibt der Webentwickler „http://www.kde-apps.de/“ in den Webbrowser ein, gelangt das Programm scheinbar sofort zum Ziel „http://de.kde-apps.org/“. Was aber passiert dazwischen und wie? Über wieviele Stationen wird weitergeleitet?

Das muss der Webentwickler in Erfahrung bringen, will er seinem Skript auch beibringen, einer HTTP-Umleitung zu folgen. Mit dem „Request and Response HTTP Header Viewer“ von AskApache können  Webentwickler jede Stufe der Abfrage(n) Schritt für Schritt nachvollziehen.


Script in Aktion

Theoretisch kommen mehrere Möglichkeiten in Frage, wie eine Weiterleitung erfolgen kann:

1. Absolut nicht zu empfehlen: Weiterleitung per Javascript. Diese Art der Weiterleitung bietet nur Nachteile. Nicht jeder Browser hat Javascript aktiviert. Web-Roboter und Skripte können in der Regel Javascript nicht interpretieren, so dass diese Methode viele Programme von der Webseite ausschließt. Diese Methode wird von vermeintlichen Profis gerne genutzt.

2. Nicht ganz Standard-konform: Der Webserver liefert eine Seite mit dem HTTP-Statuscode 200 aus, mit einem META-Refresh von 0 und der neuen Adresse als Ziel. Status 200 bedeutet, dass die Abfrage erfolgreich war und der Anfrager am Ziel seiner Wünsche sein dürfte. Das stimmt aber nicht, wenn die Seite mit Status 200 im Wesentlichen nur aus einem META-Refresh besteht und der gesuchte Inhalt woanders liegt. Diese Lösung ist nicht optimal, weil Anfrage des Client-Programms mit dem Anfrageergebnis (Status 200, „Alles OK“) nicht in logischem Zusammenhang steht. Die Deutsche Telekom macht das so auf „http://www.telekom.de/“.

3. Standard-konform: Der Webserver liefert eine Seite mit den Statuscodes 301 oder 302 aus. Eingerichtet werden solche Weiterleitungen beim Apache Webserver per htaccess-Datei („Redirect Permanent /nichtmehrda.html http://www.sondernhier.de/“). Status 301 markiert ein dauerhaft (permanent) verschobenes Objekt, 302 ein vorübergehend verschobenes Objekt.

Zurück zum Beispiel „http://www.kde-apps.de/“. Geben Sie die Adresse ins Adressfeld des „Request and Response HTTP Header Viewer“ ein. Eine Abfrage liefert derzeit (September 2005) den Status 302. Interessant ist das Feld „Location“ in den Kopfdaten der Abfrage. Darin ist das neue Ziel der Schnitzeljagd angegeben. Die Webseite nutzt also einen Standard-konformen Weg der Umleitung.

Das hoffentlich endgültige Ziel ist die im „Location“-Feld angegebene Adresse „http://de.kde-apps.org“. Wenn Sie auch diese Adresse nun ins Adressfeld des Header-Viewers eingeben und das Formular losschicken, erhalten Sie ein Abfrageergebnis mit dem Statuscode 200. Die Abfrage war erfolgreich. Im HTML-Wust unter dem Header ist die relative Adresse des gesuchten Favicons zu finden: „<link rel=“shortcut icon“ href=“/img/favicon-3-2.ico“ />“. Ein Skript müsste das href-Attribut auslesen und mit der Host-Adresse kombinieren, um die absolute Adresse zu erhalten. Sie lautet demnach „http://de.kde-apps.org/img/favicon-3-2.ico“.

Links zum Thema:

Erstveröffentlichung 22.09.2005

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.