599
22.2
Wie spät ist es? Aufbau eines CGI-Skripts
Betrachten Sie noch einmal den unteren URL in Abbildung 22.2. CGI-Skripte müssen sich
auf einem Server in einem besonderen Verzeichnis befinden. In der Regel sind sie im Ver-
zeichnis
cgi-bin/ oder in einem Unterverzeichnis von cgi-bin/.
22.2 Wie spät ist es? Aufbau eines CGI-Skripts
In diesem Abschnitt lernen Sie, wie ein CGI-Skript funktioniert, das eine dynamische Web-
seite mit der aktuellen Uhrzeit produziert. In dem Ordner mit Beispielprogrammen (siehe
Anhang C) finden Sie den Ordner
httpserver. Darin sind alle Webapplikationen dieses
Buches zusammengefasst. (Zusätzlich befinden sich die Skripte auch noch in den Kapitel-
bezogenen Verzeichnissen.)
Werfen Sie einen Blick auf die Verzeichnisstruktur des Ordners
httpserver. In diesem Ver-
zeichnis ist die Datei
httpd.py. Das ist der HTTP-Server namens localhost, dem ein
Browser auf Ihrem Rechner Kontakt aufnehmen kann, so als ob es irgendein Webserver im
Internet wäre. Neben der Datei
httpd.py finden Sie einiger Unterverzeichnisse, darunter
auch
cgi-bin. Dieses Verzeichnis ist für CGI-Skripte reserviert. Darin (und nur darin)
befinden sich alle CGI-Skripte, die über den Server aufgerufen werden können. Die anderen
Unterverzeichnisse gehören zu Projekten, die in verschiedenen Kapiteln dieses Buches
angesprochen werden.
Die Ausgabe eines CGI-Skripts
Was macht ein CGI-Skript? Zunächst einmal ist ein CGI-Skript ein Python-Programm, das
eine Ausgabe liefert. Starten Sie das Programm
httpserver/cgi-bin/zaehler.py. Sie
erhalten im Shell-Fenster folgende Ausgabe:
Dieser Text ist ein HTTP-Paket, das eine Webseite definiert. Er besteht aus zwei Teilen, die
durch eine Leerzeile getrennt sind. Wichtiges Detail: Diese Leerzeile muss wirklich leer sein.
Der Kopf (Header) beschreibt, welche Art von Information das Paket enthält (MIME-
Typ). Bei unseren Beispielen handelt es sich immer um HTML-Dokumente. Sie werden
durch den MIME-Typ
text und den MIME-Subtyp html gekennzeichnet. Man schreibt
text/html. Browser und Server unterstützen aber auch noch andere MIME-Typen wie
z.B.
text/plain (einfacher ASCII-Text) oder image/tiff (Bild im TIFF-Format).
Außerdem kann der Header noch so genannte »Cookies« enthalten. Darauf gehe ich in
Abschnitt 22.7 ein.
Der Körper (Body) enthält die eigentlichen Nutzdaten. Hier ist das ein HTML-Quelltext.
Neben statischen Textabschnitten, die immer gleich sind, enthält er auch Teile, die erst
Content-type: text/html; char-set=utf-8
<html>
<body>
<h2>Die aktuelle Uhrzeit </h2>
Es ist 8 Uhr und 59 Minuten.
</body>
</html>
Kapitel 22
CGI-Programmierung
600
zum Zeitpunkt des Programmlaufs dynamisch erzeugt und eingebaut worden sind,
nämlich die Stunden und Minuten der aktuellen Uhrzeit.
Die Ausgabe des CGI-Skripts, das HTTP-Paket mit dem HTML-Text, ist eigentlich nicht für
Menschen, sondern für Webbrowser gedacht. Webbrowser können HTML-Texte interpretie-
ren und als formatierte Dokumente darstellen.
Aufruf mit dem Webbrowser
Wenn Sie auf Ihrem Rechner ein CGI-Skript testen wollen, brauchen Sie einen HTTP-Ser-
ver, der das CGI-Skript aufruft und dessen Ausgabe an den Webbrowser weiterleitet. Starten
Sie im Verzeichnis
httpserver das Python-Programm httpd.py z.B. durch Anklicken des
Programm-Icons. Es ist ein einfacher HTTP-Server, der nun im Hintergrund läuft. (Eventu-
ell blockiert zunächst die Firewall Ihres Computers die Ausführung und verlangt die Aufhe-
bung der Blockierung.) Nach dem Start des Programms sieht man (bei Windows) ein leeres
Programm-Fenster, in dem dann später gelegentlich eine Systemmeldung erscheint. Der
HTTP-Server beobachtet ständig Port 8000 Ihres Systems und wartet darauf, angesprochen
zu werden. Er beansprucht nur geringe Systemressourcen. Sie können ihn getrost während
Ihrer gesamten Sitzung laufen lassen.
Öffnen Sie nun einen Webbrowser (z.B. Firefox oder Internet Explorer) und tragen Sie in
das Adressfeld den URL Ihres Skripts ein. Er lautet:
http://localhost:8000/cgi-bin/uhrzeit.py
Dabei ist localhost der voreingestellte Servername und :8000 der Port, den der HTTP-Ser-
ver verwendet. Beachten Sie folgendes Detail: Der Pfad hinter dem Domain-Namen im URL
beginnt in dem Verzeichnis, in dem sich der HTTP-Server befindet. Die Pfadbezeichnung
beginnt also immer mit
/cgi-bin/.
Wenn Sie nun
(Enter) drücken, müsste Ihr Browser einen Text ähnlich wie in Abbildung
22.3 (rechts) zeigen. In dem Applikationsfenster des HTTP-Servers (links) werden bei jeder
Anfrage über den Browser Systemmeldungen gezeigt.
Abb. 22.3: Lokaler HTTP-Server und Browser, der die Ausgabe eines CGI-Skripts zeigt

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.