CGI ist das Akronym für „Common Gateway Interface“ (deutsch: allgemeine Serverschnittstelle) und ist die dynamische Alternative, um Anwendung und Scripts auf Webservern (entfernt oder lokal) bereitzustellen. Zur Gestaltung von Webseiten, die der zu generierenden Webseite untergeordnet sind und zum Testen von Funktionalitäten im Webbrowser sind Installation und Betrieb eines lokalen Webservers erforderlich. Der meistgenutzte lokale Webserver heißt „Apache“ und kann unter verschiedenen Betriebssystemen in speziell anzupassenden Versionen installiert werden.
Apache als lokaler Webserver und der Order „cgi-bin“
Die viel genutzte Open Source Distribution des Apache-Webservers heißt „XAMPP“ und installiert automatisch die für die Webentwicklung erforderliche Ordnerhierarchie. Konventionell vorgegeben ist der (Über-) Ordner für Webprojekte „htdocs“. Neben diesem Ordner, in dem die Webseiteentwicklung, gegliedert in Unterordner zu speichern ist, befindet sich im XAMPP-Ordner auf erster Hierarchieebene der Ordner „cgi-bin“. Im „cgi-bin“-Ordner werden CGI-Skripte aller auf dem lokalen Webserver entwickelten Webseiten gespeichert.
Formale CGI-Prozedur
Für jede dynamische Webanwendung, die über ein CGI-Script ausgeführt wird, ist ein spezielles CGI-Script zu erstellen und im cgi-bin-Ordner zu hinterlegen. Wenn eine Webseite, z. B. aus einem Webformular, Daten sendet, um sie in eine Tabelle oder Datenbank einzutragen, dann ist im HTML-Code der jeweiligen Formular-Webseite ein entsprechende CGI-Script-Aufruf eingetragen. Das jeweilige CGI-Skript im „cgi-bin“-Ordner führt die intendierte Sendeaktion aus.
Ausführen des CGI-Scripts über den HTML-Code der Webseite
HTML-technisch wird der manuelle Aufruf des CGI-Scripts über eine integrierte Aktions-Schaltfläche ausgelöst.
CGI-geleiteter Transfer
Über das nominelle CGI-Skript wird ein komplizierter Sendevorgang gesteuert: Formulardaten werden als Benutzeraktion eingegeben. Ist die Formulareingabe abgeschlossen, klickt der Benutzer die Aktions-Schaltfläche an.
Im Formular-Tag des HTML-Codes lautet der Sendebefehl: „Method=“post“ ist die grundlegende Anweisung für die sendende Formulardatenübergabe. „Method=“post“ weist an, dass Eingabedaten des sendenden Webformulars an das entsprechend genannte CGI/Perl-Script weitergeleitet werden. Dort werden übermittelte Formulardaten zwischengespeichert und encodiert, bevor sie an die jeweilige Empfängeradresse gesendet werden.
Senden des CGI-Scripts über freien Netzwerk-Port
Netzwerktechnisch bedeutet es, dass CGI auf dem Anwendungscomputer über einen freien Port verfügen muss, über welchen Daten nach extern gesendet werden können. Das Sendeziel, von dem Webformulardaten Daten empfangen und decodiert gespeichert werden, kann eine Datenbank, Tabelle oder simple Textdatei sein.
Bei einem lokalen Webserver findet der Datentransfer über den definitiven Port des lokalen Webserver (localhost) statt.
Optionen lokaler Webserver
Auf Windows-Systemen ist als lokaler Webserver der „Internet Information Services“ (IIS) die Alternative zu „Apache“. Der IIS empfiehlt sich für lokale, dynamische Webseite-Entwicklungen rund um ASP (Active Server Pages) und „Microsoft SQL“.
Bedeutung von CGI
CGI ist längst nicht mehr die erste Wahl, um auf Webseiten erzeugte Daten dynamisch zu senden. Microsofts Distribution des lokalen Webservers, der Internet Information Services (IIS), verfügt in der Basiskonfiguration über keinen CGI-Ordner.
FastCGI unter IIS
Der Internet Information Service (IIS) installiert CGI nicht in der Basiskonfiguration. Eine beschleunigte CGI-Variante unter der Bezeichnung „FastCGI“ ist nach zu installieren.
Sofern erweiterte Benutzerrechte vorhanden sind, kann in der Systemsteuerung unter „Programme“ > „Windows-Funktionen aktivieren oder deaktivieren“ CGI als Option gewählt werden. Im Verzeichnis „WWW-Dienste“ ist unter „Anwendungsentwicklungsfeatures“ „CGI“ zu aktivieren. Danach ist CGI unter dem IIS installiert.
FastCGI hat sich inzwischen zu einer Alternative für PHP (Hypertext Preprocessor) entwickelt. Wie PHP, als Skriptsprache SQL-Daten, transferiert es, in Verbindung mit der Datenquelle, codierte Daten zum referenzierten SQL-Server.
CGI-Nachteile und SQL
CGI ist Vorgänger dynamischer Webseite-Entwicklungen, konzipiert zum Datentransfer an einen entfernten/lokalen Webserver. SQL („Structered Query Language“) ist die Beschreibungssprache für relationale Datenbanken. PHP ermöglicht wesentlich beschleunigten SQL-Datentransfer.
Großer Nachteil von CGI (ursprünglich zur Datenübertragung im WWW entwickelt) sind Performanceprobleme. Wenn Daten in ein Webformular eingegeben werden, verarbeitet sie zunächst das entsprechend benannte CGI-Script im CGI-Ordner des lokalen Webservers, bevor encodierte Daten an den entfernten Webserver gesendet werden. Gespeicherte Daten sind für authentifizierte Webclients wieder aufruf- und per Webbrowser visualisier- und editierbar.
Trotz seiner Langsamkeit – insbesondere bei großen Datenmengen – hat CGI zur Protokollübertragung nicht ausgedient und findet auch aktuell auf Webservern Anwendung.
Die HTML-Methode ‚get‘ – Datentransfer in umgekehrter Richtung
HTML bietet zum Datenempfang die Anweisung ‚method=get‘. Das Anfordern und Empfangen von Daten wird ebenfalls über ein CGI-Script ausgeführt, jedoch in umgekehrter Richtung, z. B. wenn Datensätze aus einer Onlinedatenbank abgerufen und im lokalen Webbrowser angezeigt werden sollen.
CGI und HTML
IM HTML Code von Webseiten können HTML Tags und CGI-Aufrufe integriert werden. Integrierte Anwendungen können fünf verschiedene Funktionen haben:
Das Webformular ist in HTML-Tags: form einzubetten. Der Aufruf des zuvor anzulegenden CGI-Scripts erfolgt über den ‚action‘-Befehl mit dem bestimmenden Attribut: „method=post“ sendet Formulareingaben, sobald die Aktionsschaltfläche „senden“ (oder ähnliches) angeklickt wird. Aktuelle Formulardaten werden über das definitive CGI-Skript codiert und gesendet.
Ein CGI-Script in Verbindung mit dem „-Tag ist immer dann erforderlich, wenn eine Benutzerinteraktion auf einer Webseite auszuführen ist.
Alternativ kann ein CGI-Script einen automatischem Verweis ausführen, für welchen keinerlei Benutzerinteraktion erforderlich wird, zum Beispiel, um Zeit- und Datumsverläufe aufzurufen und anzuzeigen. Bei der Verweisvariante ist das CGI-Skript als Anker im HTML-Code eingebunden. Zur Zwischenspeicherung des aktuellsten Seitenaufrufinkrements ist entweder eine separate Textdatei anzulegen oder die Speicherung der Seitenzahl erfolgt über ein Server Include. Das Server Include entspricht einer HTML-Datei, die ein oder mehrere Scriptbefehle enthält. Sie werden ausgeführt, bevor der Webserver an den Client sendet.
Zusammenfassung
CGI, oder Common Gateway Interface, ist ein Protokoll zur Erstellung von dynamischen Webinhalten. Es ermöglicht die Verbindung von Webservern und Anwendungen oder Skripten. Der meistverwendete lokale Webserver zur Implementierung von CGI ist Apache, der oft durch die Open Source Distribution XAMPP eingesetzt wird.
Bei der Webentwicklung mit Apache werden CGI-Skripte in einem speziellen Ordner namens cgi-bin gespeichert. Diese Skripte steuern dynamische Webanwendungen und sind im HTML-Code von Webformularen verlinkt, um Daten an Datenbanken oder andere Speicherorte zu senden.
Die Formularübertragung erfolgt durch CGI-Skripte, die auf „Method=post“ im HTML-Formulartag reagieren. Diese Skripte codieren und senden die eingegebenen Daten an den vorgesehenen Speicherort. Auf Netzwerkebene muss CGI Zugriff auf einen freien Port haben, um Daten extern zu senden.
Während Microsofts Internet Information Services (IIS) eine Alternative zu Apache ist, ist CGI nicht in der Basiskonfiguration enthalten. Stattdessen kann FastCGI, eine verbesserte Version von CGI, installiert werden, die inzwischen auch eine Alternative für PHP darstellt.
Trotz der Entwicklung schnellerer Technologien wie PHP, bleibt CGI relevant, insbesondere für bestimmte Protokollübertragungen. CGI hat jedoch Performanceprobleme, insbesondere bei der Verarbeitung großer Datenmengen.
Häufige Fragen und Antworten
Was ist CGI?
CGI steht für „Common Gateway Interface“ und ist eine Schnittstelle zur Erstellung von dynamischen Webinhalten. Es ermöglicht die Verbindung von Webservern und Anwendungen oder Skripten. CGI wird verwendet, um Anwendungen und Scripts auf Webservern bereitzustellen und dabei Daten zwischen dem Server und dem Client auszutauschen.
Wie funktioniert CGI?
Bei der Verwendung von CGI wird ein spezielles CGI-Script auf dem Webserver erstellt. Dieses Script wird im HTML-Code der Webseite eingebunden und ausgeführt, wenn eine bestimmte Aktion auf der Webseite durchgeführt wird, z.B. das Absenden eines Formulars. Das CGI-Script verarbeitet die Daten, die durch die Aktion gesendet werden, und kann sie zum Beispiel in einer Datenbank speichern oder an einen anderen Speicherort senden.
Wie wird CGI auf einem lokalen Webserver verwendet?
Um CGI auf einem lokalen Webserver zu verwenden, muss zunächst ein Webserver auf dem lokalen Computer installiert und konfiguriert werden. Der meistgenutzte lokale Webserver ist Apache. Nach der Installation und Konfiguration des Webservers kann ein spezieller Ordner namens „cgi-bin“ erstellt werden, in dem die CGI-Scripts gespeichert werden. Diese Scripts werden dann im HTML-Code der Webseite verlinkt und ausgeführt, wenn eine entsprechende Aktion auf der Webseite durchgeführt wird.
Welche Alternativen gibt es zu CGI?
Obwohl CGI immer noch in bestimmten Anwendungsbereichen eingesetzt wird, gibt es mittlerweile schnellere und effizientere Alternativen. Eine Alternative ist die Verwendung von serverseitigen Skriptsprachen wie PHP, die direkt in den HTML-Code eingebettet werden können und eine schnellere Verarbeitung von Daten ermöglichen. Eine andere Alternative ist die Verwendung von JavaScript und AJAX, um dynamische Inhalte auf der Client-Seite zu generieren und mit dem Server zu kommunizieren.