| |
| * Link führt ins Internet |
|
| |
Dynamisch erzeugte Websites mit Formularen oder Datenbanken erfordern in der Regel die serverseitige Ausführung von Programmen, die die Formularverarbeitung oder die Daten einer externen Datenbank in die Website integrieren.
Die für solche Zwecke geschaffene Schnittstelle zwischen dem Webserver und den dort abgespeicherten Programmen trägt den Namen Common Gateway Interface, kurz CGI.
Das Common Gateway Interface regelt den Aufruf und die Parameterversorgung von externen Programmen, den so genannten CGI-Skripten. Die Parameterübergabe erfolgt hierbei in Abhängigkeit von der beim Aufruf des CGI-Programms gewählten HTTP-Methode. Der HTTP-Server und das aufgerufene CGI-Programm kommunizieren über eine Reiche von im CGI-Standard festgelegten Umgebungsvariablen. Diese enthalten Informationen über den HTTP-Server und die vom Client erzeugte Anfrage.
Der hinter der CGI-Schnittstelle stehende Mechanismus ist denkbar einfach:
Ein HTTP-Client fordert eine Seite an, deren URL auf ein vom Server auszuführendes Programm verweist. Dieses befindet sich in einem speziellen Verzeichnis, z.B. cgi-bin.
Der Server erkennt an der Dateiendung, dass er sich um ein Programm oder Skript handelt und führt es auf. Das Skript erzeugt einen Antwort-Header gemäss HTTP-Protokoll, eine Leerzeile sowie den Inhalt der Antwort. Die Ausgabe des Programms erfolgt auf der Bildschirmausgabe, die vom Server auf den HTTP-Client umgeleitet wird.
Ein CGI-Skript kann entweder über die HTTP-Methode GET oder POST aufgerufen werden.
GET
Bei der GET-Methode werden die dem CGI-Skrip zu übergebenden Parameter, durch ein Fragezeichen getrenn, an den URL der Client-Anfrage gehängt.
Beispiel
www.domain.de/cgi-bin/suche?wort=PHP
|
Hierdurch wird die Umgebungsvariable QUERY_STRING mit dem Wert der so übergebenen Parameter belegt.
| Hinweis: Der Query-String ist der an den URL angehängte und von diesem durch ein Fragezeichen abgetrennte Teil, der die einem CGI-Programm zu übergebende Parameter enthält. Diese werden in der Umgebungsvariable QUERY_STRING abgelegt. |
POST
Die zweite Möglichkeit, Daten an ein CGI-Skript zu übergeben, erfolgt über die POST-Methode. Hierbei werden dem Webserver die Daten in Entity-Body übergeben und an das CGI-Skript über die Standardeingabe weitergeleitet.
Die Sprache zur Programmierung des Skripts kann dabei beliebig gewählt werden. Es kann ein kompiliertes C-Programm sein, ein Skript für den als CGI-Programm konfigurierten PHP-Interpreter, ein Perl-Skript oder ein beliebiges ausführbares Programm.
Ein CGI-Skript kann Dokumente beliebigen Formats generieren, z.B. HTML-Dokumente. Damit der Client, dem das generierte Dokument gesendet wird, weiss, um welche Art von Dokument es sich handelt, erzeugt das CGI-Skript vor den eigentlichen Nutzdaten einen Header. Der Header besteht aus Textzeilen mit dem Format der bereits beschriebenen HTTP-Header und wird durch eine Leerzeile abgeschlossen.
Jeder Header besteht wie schon erwähnt, aus mindestens zwei Zeilen, die für jedes Skript zwingend erforderlich sind. Die erste Zeile spezifiziert dabei den MIME-Type des Dokuments.
Beispiel
Sofern das Skript einen Verweis auf ein anderes Dokument generiert, wird in der ersten Zeile die Location dieses Dokuments referenziert.
Beispiel
Location: www.domain.de/index.html
|
Die zweite Zeile ist eine Leerzeile, die den Header von den eigentlichen Nutzdaten trennt.
|
|
|
|
|
|
|