CGI Common Gateway Interface
Inhalt
- Einleitung
- Benutzung
- Beispiele
- Spezifikation
Einleitung
Was ist das CGI ?
Common Gateway Interface
- ermöglicht beliebige vorbereitete Programme auszuführen.
- Eingabeinformationen vom WWW-Client
- liefern HTML Daten an den WWW-Client zurück
- spezifiziert erforderliche Schnittstellen
Wozu kann das CGI verwendet werden ?
- Bereitstellung von HTML Informationen on the fly
- non-html Dokumente:
PostScript-, Word- Dokumente,
SQL Datenbanken, Volltext Dokumenten-Systeme.
- interaktive Antworten
- standardisierte Lösung
- Konvertierung von Handbuchseiten in HTML versenden,
- Verbindung zu WAIS, archie, SQL, Datenbank;
Stellen einer Anfrage an die Datenbank
Aufbereiten der Antwort in HTML
- Interaktion mit Benutzern des WWW-Servers,
z.B. Warenauswahl und Bestellung.
Wie sehen CGI Programme aus ?
- selbstständig vom Betreibssystem ausgeführte Programme
- in jeder gängigen Programmiersprache
- Bedingungen:
- Umgebungsvariablen (environment variablen)
- Standart-Eingabe (stdin)
- Standart-Ausgabe (stdout)
Verbreitete Programmiersprachen
- PERL (Practical Evaluation and Reporting Language),
- diverse Unix Shells:
sh, csh, tcsh, bash, ksh, zsh
,
- REXX (REstructured eXtended eXecutor),
- TCL (Tool Command Language),
- C oder C++.
Interpretierte Sprachen bevorzugt.
Wer hat CGI entwickelt ?
Autoren der ersten WWW-Server
- Tony Sanders,
- Ari Luotonen,
- George Phillips,
- John Franks.
Aktuelle Version CGI/1.1.
Benutzung
Wie werden die Informationen zwischen dem
WWW-Client, WWW-Server und dem CGI Program ausgetauscht ?
Auswahl des CGI Programms in einem URL.
http://server-ip/path/cgi-prog/path-info?query-string
- Zugriffsmethode (
http:
),
- Servername bzw. IP-Adresse (
//server-ip
)
- Pfad zur Resource (
path
).
- Beginnt meist mit
cgi-bin
.
- Konfiguration des WWW-Servers (
httpd.conf
)
- Name des CGI-Programs
cgi-prog
.pl
bedeutet ein Perl Program
Hinweis:
keine Kommandozeilenparameter an das CGI Program
D.h. cgi-prog arg1 arg2
geht nicht
Wie wird Information vom Server empfangen ?
Empfang auf 3 Arten:
QUERY_STRING
Umgebungsvaraible,
PATH_INFO
Umgebungsvaraible,
- direkt über
Stdin
.
Query-String Methode
http://server-ip/path/cgi-prog/path-info?query-string
query-string
in Umgebungsvariable QUERY_STRING
- URL Kodierungsschema
- Leerzeichen (Blanks) in
+
- spezielle Zeichen in hexadezimaler Form
%xx
- Dekodierung erforderlich
- Angabe von Hand oder
- vom WWW-Client generiert
- z.B. von
<ISINDEX>
oder <FORM>
Path-Info Methode
http://server-ip/path/cgi-prog/path-info?query-string
/path-info
in Umgebungsvariable PATH_INFO
- nicht im URL Schema kodiert
- Angabe nur explizit
- z.B. Grundinformationen wie die aktuelle Sprache
/cgi-prog/language=english?query-string
.
Stdin
-Datei Methode
Wird per Pipe gesendet und von Stdin
gelesen
- Kodierung wie im
QUERY_STRING
- Dekodierung erforderlich
- Auswahl mit
<FORM>
Keyword und
- Parameter
METHOD="POST"
- Länge in der Umgebungsvariablen
CONTENT_LENGTH
- End-of-File für
Stdin
ist nicht definiert
Wie wird Information zum Server gesendet ?
Rückgabe durch Stdout
"Datei"
im richtigen Format: HTML
- Header: 2 Zeilen ASCII Text
- 1. Zeile MIME-Type oder Location
- 2. Zeile leer
MIME Inhaltstyp
Content-type: m-type/m-stype
Beispiele
text/html
für HTML Text
text/plain
für ASCII Text
- auch für Graphiken, Sound und Videos
Ortsangabe
Location: ftp://host/dir/dateix.txt
Der Client erzeugt eine FTP-Verbindung
Wie wird Information vom Client aufbereitet ?
Formulare: HTML <FORM>
Keyword
zwei Parameter
METHOD="GET"
, Variable QUERY_STRING
METHOD="POST"
, "Datei" Stdin
Daten des Formulars
NAME
Keyword: Namen für Eingabefelder
- Inhalt der Eingabefelder wird mit Namen gesendet
- Folge von
name=content
Paaren
- durch
&
getrennt
- wird automatisch kodiert
- im CGI Program dekodieren und verwenden
Beispiele
Grundaufbau CGI Program
- Feststellen der Übertragungsmethode
Ansehen der Umgebungsvariablen REQUEST_METHOD
.
Mögliche Werte: GET
, POST
, HEAD
- Lesen von
CONTENT_LENGTH
Bytes von
QUERY_STRING
oder Stdin
.
- URL Dekodierung der Zeichenkette.
- Aufspaltung der Zeichenkette entlang
&
.
- Aufspaltung der Paare
name=content
entlang =
.
- Verwenden der so aufbereiteten Informationen.
Spezifikation
CGI 1.0 oder 1.1:
- Umgebungsvaraiblen (environment varaibles),
- die Kommandozeilenparameter (command line),
- Standard-Eingabe (stdin) sowie
- Standard-Ausgabe (stdout).
Alle Spezifikationen der Version 1.1 sollen auch von
zukünfigen Erweiterungen erfüllt werden.