SELFHTML: Einführung / Schnittstellen / Die CGI-Schnittstelle
Author: Redaktion SELFHTML, selfhtml81@selfhtml.org
Description: Wie sich Web-Browser, aber auch Such-Robots oder Agenten von Proxy-Servern beim Anfordern von Web-Seiten identifizieren.
Keywords: SELFHTML, Browser, Robots, Spider, Crawler, Netscape, Internet Explorer, Identifikation, Browser-Identifikation, Client, User Agent
Date: 2005-08-22T21:21:39+02:00

| # 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-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-Programm 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.

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. Der Server führt z.B. C-, Pascal- oder auch Visual-Basic-Programme aus, die mit einem jeweiligen Compiler zu einer ausführbaren Datei kompiliert 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 und das Ausführen von CGI-Programmen erlaubt. Sie können sich selbst auf Ihrem PC lokal einen Web-Server einrichten, um dort mit CGI-Programmen zu testen. Wenn Sie bei einem Provider auf einem öffentlichen Web-Server im Internet Speicherplatz für eigene Web-Seiten erhalten, können Sie die Funktionalität dieses Web-Servers benutzen, um eigene CGI-Programme im Web einzusetzen. Wie gesagt muss Ihr Provider Ihnen die Nutzung der CGI-Schnittstelle ermöglichen. Bei manchen preiswerten oder gar kostenlosen Homepage-Vermittlern ist dies nicht der Fall. Fragen Sie den Provider im Zweifelsfall danach!

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 trägt dieses Verzeichnis den Namen cgi-bin. CGI-Programme 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-Programme 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-Programm auslesen kann (und zum Teil auslesen muss), um Daten verarbeiten zu können. Diese Daten speichert der Web-Server in so genannten CGI-Umgebungsvariablen.

Die Spezifikation (verbindliche Beschreibung) für die CGI-Schnittstelle wird zur Zeit von der NCSA Software Development Group betreut. Derzeit liegt diese Definition 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-Programme ist noch immer die Scriptsprache 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

© 2007 Impressum