next up previous contents index
Next: Das Session-Konzept von PHP Up: Sessions Previous: Sessions

HTTP und Zustandsverwaltung

Das Hypertext-Transfer-Protokoll (HTTP) ist ein zustandsloses Protokoll. Dadurch kann der HTTP-Server keinen Zusammenhang zwischen einzelnen Requests eines Browsers herstellen. Jeder Request wird als eigenständig und unabhängig von vorangegangenen Requests betrachtet. Web-Anwendung bestehen jedoch in der Regel aus einer Folge von Interaktionen zwischen den Anwendern und dem Anwendungsserver. Deshalb muss der Anwendungsserver den momentanen Zustand der Anwendung sichern und einen neuen Request des Anwenders dem entsprechenden Anwendungszustand zuordnen können. Da mehrere Anwender gleichzeitig die Anwendung nutzen können, muss der Anwendungsserver in der Lage sein mehrere Anwendungszustände zu verwalten. Diese Fähigkeiten sind ein wesentliches Merkmal, was einen Anwendungsserver von einem reinen HTTP-Server unterscheidet. Der Zustand einer Anwendung kann aufgefasst werden als Belegung bestimmter Anwendungsvariablen. Bei einem Request des Anwenders müssen diesen Variablen wieder die Werte zugewiesen werden, die sie zuletzt hatten. Letztlich basiert aber auch ein Anwendungsserver auf HTTP, so dass auf ein eigentlich zustandsloses Protokoll eine Zustandsverwaltung aufgesetzt werden muss.

Die einfachste Möglichkeit besteht darin, dass der Anwender bei jedem Request seinen Zustand an den Anwendungsserver mitschickt. Dazu baut der Anwendungsserver die Variablen, die den Zustand definieren, und deren aktuelle Belegung in jede HTML-Seite ein, die er an den Browser des Anwenders sendet. Der Zustand muss in jedem Link und Formular der HTML-Seite enthalten sein, die für einen Request an den Anwendungsserver vorgesehen sind. Bei Links wird der Zustand an die URI durch ein Fragezeichen getrennt angehängt. Bei Forms ist die Verwendung eines ``Hidden''-Formelements am besten geeignet. Klickt der Anwender auf einen Link oder schickt er ein Formular ab, erhält der Anwendungsserver auf diese Weise alle Werte der Zustandsvariablen zurück. Dieses Verfahren hat jedoch zwei Nachteile:

Auf Grund dieser Nachteile wird bei größeren Anwendungen in der Regel ein Verfahren verwendet, bei dem die Zustandsvariablen beim Anwendungsserver gespeichert werden. Anstatt alle Variablen in die HTML-Seite zu kodieren wird nur noch eine ID in die Links bzw. Formulare eingebaut. An Hand dieser ID kann der Anwendungsserver dann die zugehörigen Zustandsvariablen wiederherstellen. Darüberhinaus ist das Ablegen der ID auch in Form eines Cookies möglich, so dass dann gar keine Zustandsinformationen in der HTML-Seite enthalten sind. Wird die ID groß genug gewählt und wird sie durch einen geeigneten Zufallsalgorithmus bestimmt, ist auch das Erraten einer anderen gültigen ID praktisch nicht möglich. Da die Zustandsvariablen auf dem Anwendungsserver gespeichert werden ist die Sicherheit dieses Konzepts eng mit der Zugriffsicherheit des Rechner verbunden.


next up previous contents index
Next: Das Session-Konzept von PHP Up: Sessions Previous: Sessions
Copyright Munich Network Management Team