Das Common Gateway Interface (CGI) ist die Schnittstelle von WWW zu seiner Betriebssystemumgebung und zu anderen Programmen. Damit ist es möglich, auf der Serverseite beliebige Programme und Shellskripte zu installieren, die Clientanfragen bearbeiten oder als Schnittstelle zu anderen Programmen wie Datenbanken oder Informationssystemen dienen. Solche Programme werden auch als Gateway bezeichnet.
CGI-Programme werden in einem Verzeichnis des Servers installiert. Auf
dieses Verzeichnis ist üblicherweise ein Alias namens
CGI-BIN
gelegt.
Aufgerufen wird ein CGI-Programm durch Angabe des URL auf das Programm. Jeder Server hat ein CGI-Verzeichnis, in dem die Programme installiert werden sollen. Somit kann man ein CGI-Programm RECHERCHE folgendermaßen aufrufen:
http://www.cs.uni-sb.de/CGI-BIN/RECHERCHE
Die Programme müssen in der Lage sein, Umgebungsvariablen zu lesen und Standardein- und -ausgabe zu tätigen.
Es ist möglich, in der URL--Zeile weitere Parameter an das Programm zu übergeben. Diese werden nach einem Fragezeichen an die URL angehängt:
http://ww.cs.uni-sb.de/CGI-BIN/RECHERCHE?Knuth
Diese Parameter werden in die Umgebungsvariable QUERY_STRING übergeben und zusätzlich in die ARGV[ ]-Parameterstrings geschrieben. In diesem Fall wird 'Knuth' übergeben.
Die Variable PATH_INFO dient zur Übergabe weiterer Parameter an das CGI-Programm. Ein Beispiel:
http://ww.cs.uni-sb.de/CGI-BIN/RECHERCHE/sprache=deutsch?Knuth
Hier wird wieder 'Knuth' per QUERY_STRING übergeben und 'sprache=deutsch' in PATH_INFO.
Diese beiden Parameter benutzt man vor allem beim Aufruf von CGI-Programmen mit der GET-Methode. Sollen dem Programm ganze Dokumente oder große Datensätze geschickt werden, so geschieht dies mittels PUT oder POST. Dabei werden die Daten nach MIME-Kodierung bei der Client-Anfrage an das CGI-Programm als vollständiges HTTP-Dokument geschickt. Das referenzierte CGI-Programm bekommt die Daten dann per Standardeingabe übergeben.
Für die Rückgabe eines für den Client verständlichen Objektes ist das CGI-Programm selber verantwortlich. Das heißt, es muß einen gültigen HTTP-Transfer erledigen, der aus Header und Datenteil (HTML-Dokument) besteht. Dabei muß das CGI-Programm auch den Header erzeugen. Um das Objekt an den entsprechenden Client zu schicken, schreibt das Programm auf die Standardausgabe, die der Server beim Aufruf des Programms entsprechend umgeleitet hat.
Verweist das CGI-Programms lediglich auf ein mit einem URL adressierbares Objekt, so besteht die Ausgabe des Programms aus zwei Zeilen: der location--Zeile und einer anschließenden Leerzeile:
Location: /dir1/dir2/myfile.html
Details (und eine Auflistung aller dem CGI-Programm vom Server zur Verfügung gestellter Umgebungsvariablen) sind in [10] zu finden.