 CGI Common Gateway Interface
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
- .plbedeutet 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_STRINGUmgebungsvaraible,
- PATH_INFOUmgebungsvaraible,
- 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 Stdinist 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/htmlfür HTML Text
- text/plainfü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 
- NAMEKeyword: Namen für Eingabefelder
- Inhalt der Eingabefelder wird mit Namen gesendet 
- Folge von name=contentPaaren
- durch &getrennt
- wird automatisch kodiert 
- im CGI Program dekodieren und verwenden 
Beispiele
Grundaufbau CGI Program 
-  Feststellen der Übertragungsmethode 
 Ansehen der UmgebungsvariablenREQUEST_METHOD.
 Mögliche Werte:GET,POST,HEAD
-  Lesen von CONTENT_LENGTHBytes vonQUERY_STRINGoderStdin.
-  URL Dekodierung der Zeichenkette. 
-  Aufspaltung der Zeichenkette entlang &.
-  Aufspaltung der Paare name=contententlang=.
-  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.
 [Previous]
[Next] 
[Contents]
[Previous]
[Next] 
[Contents]