Zum Inhalt springen

Common Gateway Interface

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 20. November 2003 um 01:12 Uhr durch Perlentaucher (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.


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 können, und die selbst HTML-Code erzeugen und an einen Web-Browser senden können. CGI ist also eine, schon länger bestehende, Variante Webseiten dynamisch bzw. interaktiv zu machen.

Um die CGI-Schnittstelle zu verwenden, muss diese von der Web-Server-Software unterstützt werden. Dabei ist wichtig, dass diese Software dem Programm/Script immer 3 Dinge zur Verfügung stellt:

  • Umgebungsvariablen (z.B. SERVER_NAME), deren Inhalte dem Programm helfen sich "vor Ort" zu orientieren und über aktuelle Einstellungen zu informieren.
  • Weiterleitung von Ausgaben, meistens als dynamisch erzeugte HTML-Seite (oder Seitenteile), aber auch als Einträge in Fehlerprotokolldateien.
  • Einholen von Formulareingaben oder Aufrufparametern z.B. aus HTML-Seiten, damit das CGI-Programm/-Script auf diese reagieren kann. Dabei können solche Daten als Umgebungsvariable (GET-Methode) oder über einen Eingabe-Kanal (POST-Methode) Eingang ins Programm/Script finden, wobei letztere Möglichkeit sicherer ist.

Wie diese Daten strukturiert sind, ist die eigentliche Schnittstellenbeschreibung (deshalb "interface").

CGI Programme können also in allen möglichen Programmiersprachen geschrieben sein. Es muss lediglich auf dem Server ein entsprechender Laufzeitinterpreter vorhanden sein, oder das Programm muss für das Serverbetriebssystem kompiliert worden sein.

Am weitesten verbreitet ist hierbei Perl.

Ein Nachteil, der der CGI-Ausführung nachgesagt wird, ist dass sie langsamer sei als andere Möglichkeiten (s. z.B. Servlet), und deshalb heutzutage nicht mehr so oft eingesetzt wird. Andererseits wird dieser Nachteil von modernen Webserver-Typen für einige Programmiersprachen weg optimiert (z.B. hat der "Apache"-Webserver eingebaute Module um Perl-CGI-Skripte schneller ausführen zu können). Alle derartigen Lösungen sind jedoch nicht mehr programmiersprachen-unabhängig.

weitere serverseitige Technologien: ASP, ColdFusion, JSP/Servlet, Perl, PHP