Die CGI (Common Gateway Interface) ist eine vom W3C (World Wide Web Consortium) definierte Spezifikation, die festlegt, wie ein Programm mit einem Hyper Text Transfer Protocol (HTTP)-Server interagiert. Das Common Gateway Interface stellt die Middleware zwischen WWW-Servern und externen Datenbanken und Informationsquellen dar. CGI-Anwendungen führen im Auftrag von WWW-Servern bestimmte Aufgaben der Informationsverarbeitung, des Abrufs und der Formatierung aus.
Die Besonderheit eines CGI-fähigen Webservers besteht darin, dass Computerprogramme erstellt und eingesetzt werden können, die Benutzereingaben entgegennehmen und eine Webseite "on the fly" erstellen können. Im Gegensatz zu statischen Webseiten, die einige voreingestellte Informationen anzeigen, ermöglichen diese interaktiven Webseiten einem Client, Informationen an den Webserver zu senden und eine von der Eingabe abhängige Antwort zurückzubekommen.
Eine Web-Suchmaschine ist ein gutes Beispiel für eine interaktive Web-Seite. Der Kunde gibt ein oder mehrere Schlüsselwörter ein, und der Web-Index gibt eine Liste von Webseiten zurück, die den eingegebenen Suchkriterien entsprechen. Die vom Web-Index zurückgegebene Webseite ist ebenfalls dynamisch, denn der Inhalt dieser Seite hängt davon ab, was der Kunde als Suchbegriffe eingibt - es handelt sich nicht um ein vordefiniertes statisches Dokument.
Um eine interaktive Webseite zu erstellen, werden HTML-Elemente verwendet, um ein Formular anzuzeigen, das die Eingaben des Kunden entgegennimmt und an spezielle Computerprogramme auf dem Webserver weiterleitet. Diese Computerprogramme verarbeiten die Eingaben des Kunden und geben die angeforderten Informationen zurück, in der Regel in Form einer Webseite, die vom Computerprogramm spontan erstellt wird.
Diese Programme werden als Gateways bezeichnet, weil sie in der Regel als Vermittler zwischen dem Webserver und einer externen Informationsquelle, z. B. einer Datenbank, fungieren. Gateway-Programme tauschen Informationen mit dem Webserver über einen Standard aus, der als Common Gateway Interface bekannt ist. Aus diesem Grund wird der Begriff CGI-Programmierung verwendet, um die Aufgabe zu beschreiben, Computerprogramme zu schreiben, die Client-Anfragen nach Informationen bearbeiten.
Der Begriff Gateway beschreibt die Beziehung zwischen dem WWW-Server und externen Anwendungen, die den Datenzugriff und die Datenmanipulation in seinem Namen übernehmen. Eine Gateway-Schnittstelle bearbeitet Informationsanfragen in einer geordneten Weise und gibt dann eine entsprechende Antwort zurück. Zum Beispiel ein spontan generiertes HTML-Dokument, das die Ergebnisse einer Abfrage an eine externe Datenbank enthält.
Mit anderen Worten: CGI ermöglicht es einem WWW-Server, WWW-Clients mit Informationen zu versorgen, die diesen Clients sonst nicht zur Verfügung stünden. So kann beispielsweise ein WWW-Client eine Abfrage an eine Oracle-Datenbank stellen und eine entsprechende Antwort in Form eines selbst erstellten Web-Dokuments erhalten. Einige häufige Verwendungen von CGI sind: Sammeln von Benutzer-Feedback zu einer Produktlinie über ein HTML-Formular. Abfrage einer Oracle-Datenbank und Wiedergabe des Ergebnisses in Form eines HTML-Dokuments.
Wie in der obigen Abbildung dargestellt, tauscht ein auf einem Client-Rechner laufender Web-Browser über das Hyper Text Transfer Protocol oder HTTP Informationen mit einem Web-Server aus. Der Webserver und das CGI-Programm laufen normalerweise auf demselben System, auf dem sich der Webserver befindet. Je nach Art der Anfrage des Browsers stellt der Webserver entweder ein Dokument aus seinem eigenen Dokumentenverzeichnis bereit oder führt ein CGI-Programm aus.
Die Abfolge der Ereignisse für die Erstellung eines dynamischen HTML-Dokuments durch CGI-Skripting ist wie folgt:
Stand: 28.12.2021