| # Die CGI-Schnittstelle
| Die CGI-Schnittstelle CGI-Informationen

## Die CGI-Schnittstelle

Die CGI-Schnittstelle (Common Gateway Interface - Allgemeine Vermittlungsrechner-Schnittstelle) ist eine Möglichkeit, Programme oder Scripts im Web bereitzustellen, die von HTML-Dateien aus aufgerufen werden und die selbst HTML-Code erzeugen und an einen Web-Browser senden können. Im Unterschied zu JavaScript werden solche Scripts oder Programme aber nicht nach dem Übertragen einer Web-Seite im Browser des Anwenders ausgeführt, sondern bevor der Browser vom Server Daten übertragen bekommt. Deshalb sind CGI-Scripts oder CGI-Programme auch nur ausführbar, wenn eine HTTP-basierte Kommunikation zwischen Web-Browser und Web-Server stattfindet. CGI ist dabei auf der Server-Seite angesiedelt.

Die Datenverarbeitung geschieht ebenfalls auf dem Server-Rechner. CGI-Programme können auf dem Server-Rechner Daten speichern, zum Beispiel, wie oft auf eine Web-Seite zugegriffen wurde, oder, was ein Anwender in ein Gästebuch geschrieben hat. Ein CGI-Script kann auf dem Server-Rechner auch installierte Datenbanken abfragen. Bei entsprechendem Aufruf kann ein CGI-Programm gespeicherte Daten auslesen und daraus HTML-Code generieren. Dieser "dynamisch" erzeugte HTML-Code wird an den aufrufenden Web-Browser eines Anwenders übertragen und kann dort individuelle Daten in HTML-Form anzeigen, zum Beispiel den aktuellen Zugriffszählerstand einer Web-Seite, die bisherigen Einträge in einem Gästebuch oder Ergebnisse einer Datenbanksuche.

Die CGI-Schnittstelle muss von der Web-Server-Software unterstützt werden. Aus Sicht des Mieters von Speicherplatz auf einem Web-Server steht die CGI-Schnittstelle meistens in Form eines bestimmten Verzeichnisses mit dem Namen cgi-bin zur Verfügung. In diesem Verzeichnis können Scripts abgelegt werden, die CGI-Aufgaben übernehmen. Falls Sie unsicher sind, fragen Sie Ihren Provider oder Webmaster, der Ihnen Speicherplatz im Web zur Verfügung stellt, ob er Ihnen eine CGI-Schnittstelle zur Verfügung stellt. Bei preiswerten oder gar kostenlosen Homepage-Vermittlern steht Ihnen normalerweise keine CGI-Schnittstelle zur Verfügung.

Es gibt keine Vorschriften dafür, in welcher Programmiersprache ein CGI-Programm geschrieben ist. Damit das Programm auf dem Server-Rechner ausführbar ist, muss es entweder für die Betriebssystemumgebung des Server-Rechners als ausführbares Programm kompiliert worden sein, oder es muss auf dem Server ein Laufzeitinterpreter vorhanden sein, der das Programm ausführt. Wenn der Server zum Beispiel ein Linux-Rechner ist, führt er C-Programme aus, die mit einem Linux-C-Compiler zu einer ausführbaren Datei kompiliert wurden. Wenn der Server ein Windows-NT-Rechner ist, können CGI-Scripts auch EXE-Dateien sein, die mit Compilern für C, Pascal, Visual Basic usw. erzeugt wurden. Die meisten heutigen CGI-Programme sind jedoch keine kompilierten Programme, sondern lediglich Scripts, die von einem Interpreter beim Aufruf ausgeführt werden. Der bekannteste und beliebteste Interpreter ist dabei der Perl-Interpreter.

Die CGI-Schnittstelle steht zur Verfügung, wenn ein Web-Server installiert ist, der CGI unterstützt. Sie können sich selbst auf Ihrem PC lokal einen Web-Server einrichten, um dort eine CGI-Schnittstelle zur Verfügung zu haben. Wenn Sie bei einem Provider auf einem öffentlichen Web-Server im Internet Speicherplatz für eigene Web-Seiten erhalten, können Sie die CGI-Schnittstelle dieses Web-Servers benutzen, um eigene CGI-Scripts im Web einzusetzen. Ihr Provider muss Ihnen allerdings den Zugriff auf die CGI-Schnittstelle ermöglichen. Fragen Sie den Provider im Zweifelsfall danach!

Die Spezifikation (verbindliche Beschreibung) für diese Schnittstelle wird zur Zeit von der NCSA Software Development Group betreut.

Um die CGI-Schnittstelle nutzen zu können, benötigen Sie Zugriff auf ein bestimmtes Verzeichnis auf dem Server-Rechner, das CGI-Programme enthalten darf. Meist erhält dieses Verzeichnis den Namen cgi-bin. CGI-Programme oder CGI-Scripts werden nur dann ausgeführt, wenn sie in diesem Verzeichnis liegen. Welches das CGI-Verzeichnis sein soll und wie Sie es ansprechen wollen, können Sie beim Einrichten des eigenen Web-Servers festlegen. Je nach Server können Sie auch mehrere CGI-Verzeichnisse einrichten. Bei einem Provider, der Ihnen öffentlichen Web-Speicher mit CGI-Schnittstelle eingerichtet hat, finden Sie das CGI-Verzeichnis bereits vor. Sie brauchen dann nur noch Ihre CGI-Scripts in dieses Verzeichnis hochzuladen (siehe auch CGI-Scripts auf öffentlichem Web-Server installieren).

Die CGI-Schnittstelle ruft nicht nur das jeweils auszuführende Programm auf und leitet dessen Antwort weiter, sondern stellt auch eine Reihe von Daten bereit, die der Web-Server speichert und die ein CGI-Script auslesen kann (und zum Teil auslesen muss), um Daten verarbeiten zu können. Diese Daten speichert der Web-Server in so genannten CGI-Umgebungsvariablen.

Derzeit liegt die CGI-Schnittstellendefinition in der Version 1.1 vor. Andere Schnittstellen für ausführbare Programme im Web, die von kommerziellen Herstellern wie Netscape oder Microsoft eingeführt wurden, machen der klassischen CGI-Schnittstelle Konkurrenz. Von Netscape stammt beispielsweise die API-Schnittstelle (auch NSAPI genannt), von Microsoft die ISAPI-Schnittstelle. Beide Schnittstellen sind für die Server-Software-Produkte der jeweiligen Hersteller optimiert und erreichen eine Performance bei der Datenverarbeitung, die ein Mehrfaches der CGI-Schnittstelle beträgt. Ein entscheidender Vorteil der CGI-Schnittstelle bleibt jedoch die Tatsache, dass es sich - ähnlich wie bei HTML - um einen kommerziell unabhängigen, kostenlosen und produktübergreifenden Standard handelt.

Die meistbenutzte Programmiersprache für CGI-Scripts ist noch immer Perl. Der Grund dafür ist, dass Perl sehr mächtige Funktionen besitzt, z.B. für Zeichenkettenoperationen oder für das Lesen und Schreiben von Daten. Der Perl-Interpreter, der zum Ausführen eines Perl-Scripts erforderlich ist, ist für fast alle Betriebssysteme als Freeware verfügbar und auf fast allen Server-Rechnern im Web installiert.

## CGI-Informationen

Für CGI gibt es keinen Standard, der dem Status von HTML, CSS oder XML vergleichbar wäre. Das W3-Konsortium, bei dem es zwar auch eine Arbeitsgruppe gibt, die sich um das HTTP-Protokoll kümmert, klammert die CGI-Schnittstelle aus den HTTP-Dokumenten aus. Die CGI-Schnittstelle wurde mit einem der ersten und seinerzeit erfolgreichsten Web-Server-Produkte eingeführt, nämlich mit dem NCSA-Web-Server (NCSA = National Center for Supercomputing, eine akademische Institution). Die Original-Spezifikation für die CGI-Schnittstelle von NCSA ist auf den Web-Seiten von NCSA noch verfügbar:

The CGI Specification

Allzuviel gehört eigentlich gar nicht dazu - es muss lediglich vom Web-Server unterstützt werden. Der NCSA-Server spielt mittlerweile keine Rolle mehr, die klare Führungsrolle unter den Web-Server-Produkten hat mittlerweile der frei verfügbare Apache Web-Server übernommen. Dieser unterstützt die CGI-Schnittstelle selbstverständlich auch.

### Beachten Sie:

Im Link-Verzeichnis des Online-Angebots von SELFHTML aktuell finden Sie weitere relevante und aktuelle Verweise, z.B. zu Original-Dokumentationen und weiteren Quellen:

SELFHTML-Linkverzeichnis: CGI/Perl

Innerhalb der vorliegenden Dokumentation wird CGI im Kapitel CGI behandelt.

| Andere Schnittstellen
| Flash

© 2005 Impressum