Advanced Java Services | Common Gateway Interface (CGI) |
![]() ![]() ![]() ![]() |
Mit Konsolkommandos wie etwa ping oder ipconfig kann man eine bestehende Verbindung zu einem anderen Rechner (in einem Intranet oder über das Internet) verifizieren. Diese Verbindung wird fast immer auf der Basis von TCP/IP aufgebaut, einem Protokoll, das sicherstellt, daß eine Datenübertragung möglich ist. Damit allein kann aber ein Client wie etwa ein Browser noch keine HTML-Dokumente anfordern um sie darzustellen. Dazu muß auf dem Server eine zusätzliche Software installiert sein, ein sogenannter Webserver. Dieser kann solche Anfrage entgegennehmen und beantworten. Es gibt aber auch Anfragen, bei denen es nicht damit getan ist, eine fertige HTML-Datei zu versenden. So müssen etwa Berechnungen vorgenommen werden oder Datenbestände durchsucht und aufbereitet werden um eine Clientanfrage zu beantworten. Solche Anfragen delegiert der WebServer an Programme auf dem Server, die dann ihre Ergebnisse wiederum an den WebServer mitteilen, der sie schließlich an den Client schickt. Damit verschiedenste Webserver mit verchiedensten Programmen zusammenarbeiten können wurde eine Schnittstelle entwickelt über die sich WebServer und Programme verständigen: CGI.
Die CGI-Schnittstelle besteht hauptsächlich aus einer Reihe von Umgebungsvariablen die vom WebServer bei der Installation gesetzt werden. Kommt eine Clientanfrage an ein Programm, so werden diese Variablen entsprechend neu gesetzt und das Programm gestartet. Dieses wiederum liest dann die Umgebungsvariablen aus und generiert eine Antwort, die dann der Webserver an den Client schickt.
Jede Programmiersprache, mit der man Umgebungsvariable auslesen kann, eignet sich für CGI und das können fast alle. Scriptsprachen wie Unix/Linux Shellscripts, Perl und PHP und natürlich auch streng typiierte Sprachen wie C/C++, Java, C# usw.
CGI-Umgebungsvariable | CGI-Bedeutung | CGI-Beispiele |
---|---|---|
AUTH_TYPE | Die Authentifizierungsmethode, mit der ein Benutzer überprüft wird | Basic |
CONTENT_LENGTH | Die Länge der Daten in byte, die ein Client geschickt hat und die über stdin zur Verfügung stehen | 7715 |
CONTENT_TYPE | Der MIME-Typ der Daten | text/html |
DOCUMENT_ROOT | Das Verzeichnis für WEB-Dokumente | /htdocs |
GATEWAY_INTERFACE | Die Versionsnummer der CGI-Schnittstelle | |
HTTP_ACCEPT | Eine Liste der MIME-Typen, die der Client darstellen kann | text/html, text/xml, image/jpg |
HTTP_REFERER | Der URL des Dokumentes, auf das der Client zugegriffen hat, bevor er das CGI-Programm rief | http://192.168.43.5/AlleServlets.html |
HTTP_USER_AGENT | Der vom Client für die Abfrage verwendete Browser | Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) |
QUERY_STRING | Der Datenstring, der com Client nach einem "?" als Trennzeichen an den URL angehängt werden kann | http://www.google.com/search?hl=en&q=servlet&btnG=Google+Search |
REMOTE_ADDR | Die IP-Adresse des Client-Rechners | 192.168.41.5 |
REMOTE_HOST | Der Hostname oder die IP-Adresse des Client | 192.168.41.5 |
REMOTE_USER | Der authentifizierte Name des Client | wzlbrmpft |
REQUEST_METHOD | Die Methode, mit der die Anforderung versendet wurde | POST |
SCRIPT_NAME | Der virtuelle Pfad des CGI-Programms | /cgi-bin/program.pl |
SERVER_NAME | Der Hostname oder die IP-Adresse des Servers | www.wzlbrmpft.com |
SERVER_PORT | Die Portnummer des Host, über die die Anfrage den Server erreichte | 80 |
SERVER_PROTOCOL | Das Protokoll, das über den SERVER_PORT abgewickelt wird | HTTP/1.1 |
SERVER_SOFTWARE | Der Name und die Versionsnummer des WEB-Servers, der den Client bedient | Apache Tomcat/5.0.16 |