Common Gateway Interface

Das Common Gateway Interface ist eine standardisierte Datenschnittstelle eines Webservers. Über das Common Gateway Interface, kurz CGI, können Daten zwischen Webserver und externen Softwareanwendungen standardisiert ausgetauscht werden. Auf diese Weise kann die Funktionalität einer Webseite erweitert werden. So lassen sich damit z.B. Formulareingaben auslesen.

Hintergrund und Funktionsweise

Das Common Gateway Interface wurde mit den ersten Servern für das World Wide Web programmiert, um den Datenaustausch zwischen Webservern und externen Programmen mit Hilfe einer standardisierten Form zu ermöglichen. Somit gehört die CGI-Schnittstelle zu den ältesten Schnittstellen zwischen WWW-Servern und externen Programmen. Das Besondere des Common Gateway Interface ist, dass es keine Programmiersprache für die Verwendung vorschreibt. Darüber hinaus handelt es sich dabei um einen frei verwendbaren und kostenlosen Softwarestandard. Dies mag unter anderem ein Grund für die häufige Verwendung dieser Serverschnittstelle sein. Die CGI-Schnittstelle kann plattformunabhängig arbeiten und ist dadurch nicht an eine bestimmte Programmiersprache gebunden. Die häufigsten Anwendungen werden jedoch in Perl, Java oder C geschrieben.

Ein Beispiel:

Wenn ein User auf einer Internetseite Daten hinterlegen kann, werden diese nicht direkt auf einem Server gespeichert, sondern müssen zunächst noch bearbeitet werden. Das Common Gateway Interface sorgt in diesem Fall dafür, dass die gesammelten Daten mittels eines festen Standards an ein Ausleseprogramm übertragen werden. Dort können diese aufbereitet und wieder zurück an das HTML-Formular übertragen werden. Auch Klicks auf einen Hyperlink können via CGI an entsprechende Software weitergeleitet werden. Sobald der User die Daten abgesendet hat, löst der http-Server die Ausführung eines CGI-Skripts aus. Diese Skripte liegen in der Regel in einem speziellen Ordner für Anwendungen, die über das Common Gateway Interface ausgeführt werden. Häufig lässt sich anhand einer URL ablesen, ob gerade ein CGI-Programm ausgeführt wird.

Über die URL kann der Server schließlich alle wichtigen Informationen in Form einer Zeichenkette erhalten. Hier stehen für die CGI drei Möglichkeiten offen:

  • QUERY_STRING: Diese Methode wird häufig für Anfragen verwendet.
  • PATH_INFO: Mit Hilfe dieser Angabe werden Kontextinformationen wie zum Beispiel Sprachversionen über die URL übergeben.
  • Stdin

CommonGatewayInterface.png

Anwendungsmöglichkeiten

CGI-Funktionen sind vielseitig anwendbar. Folgende Anwendungsmöglichkeiten gibt es:

  • Warenkorb-Funktion: Hier werden die Daten vom Anwender eingegeben und von einem CGI-Programm verarbeitet und anschließend wieder an den Server übertragen.
  • Formulare: Hier gibt der User Daten in eine feste Vorlage ein und sendet diese über den Klick auf einen Absende-Button an das CGI-Programm, das diese Daten ausliest, verarbeitet und wieder zurück an den Server schickt.
  • Gästebücher oder Kommentare: Auch wenn User sich in ein Gästebuch eintragen oder Kommentare hinterlassen, werden diese Eingaben häufig per CGI verarbeitet.
  • Zugriffsstatistiken auf der Homepage: Hier werden aktuelle Zugriffsdaten im Frontend ausgegeben, nachdem diese via CGI-Software verarbeitet wurden. Die Anzeige kann auch grafisch und nicht textlich ausgegeben werden.
  • Server Side Include: Auf diese Weise können Textinhalte via CGI dynamisch in die Webseite geladen werden.
  • Testen von externer Website-Software mit Hilfe eines Browsers

Vor- und Nachteile

HTML-Seiten können über ein Common Gateway Interface dynamisch generiert werden. So ist z.B. eine klassische Anwendung die Bereitstellung eines Besucherzählers, der sich nach jedem Besuch automatisch anpasst. Eine via CGI generierte Anwendung muss zudem nicht auf dem Server gespeichert werden. Somit entfällt hier auch die Serverlast. Ein weiterer Vorteil des CGI besteht in der relativ einfachen Konfiguration. Ein großer Vorteil des CGI besteht darin, dass die Schnittstelle an keine feste Programmiersprache gebunden ist und Entwickler nahezu freie Hand in der Anbindung von externen Programmen haben.

Nachteilig kann sich beim Einsatz von CGI-Programmen auswirken, dass diese oftmals relativ lange Antwortzeiten haben, weil das Programm jedes Mal neu starten muss, wenn Parameter übergeben werden. Dieses Geschwindigkeitsproblem kann zusätzlich dadurch verstärkt werden, das viele Server nur eine bestimmte Anzahl von CGI-Anwendungen gleichzeitig erlauben. Manche Anfragen des Servers werden somit abgewiesen und in eine Warteschleife gestellt. Darüber hinaus kann die Kommunikation via CGI auch bei unvorsichtigem Gebrauch eine Sicherheitslücke darstellen.

Weblinks