Interaktion und CGI


Interaktion mit externen Diensten

Browser Erweiterungen

Common Gateway Interface (CGI)

CGI Architektur

Integration in Server

Server APIs, PHP

Schicht zwischen Client und Server


CGI Konzepte

Einleitung

Was ist das CGI ?

Common Gateway Interface

Wozu kann das CGI verwendet werden ?

Formulare und CGI

Wie sehen CGI Programme aus ?

Verbreitete Programmiersprachen

Interpretierte Sprachen bevorzugt.

Wer hat CGI entwickelt ?

Autoren der ersten WWW-Server

Aktuelle Version CGI/1.1.

Benutzung

Wie werden die Informationen zwischen dem WWW-Client, WWW-Server und dem CGI Program ausgetauscht ?

CGI Architektur

Auswahl des CGI Programms in einem URL.

http://server-ip/path/cgi-prog/path-info?query-string

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 Methode

http://server-ip/path/cgi-prog/path-info?query-string

query-string in Umgebungsvariable QUERY_STRING

Path-Info Methode

http://server-ip/path/cgi-prog/path-info?query-string

/path-info in Umgebungsvariable PATH_INFO

Stdin -Datei Methode

Wird per Pipe gesendet und von Stdin gelesen

Aufbau der Anfrage im HTTP Protokoll

Codierung als Query-String bei der GET-Methode:

 
GET /path/echo.phtml?x=123&y=56 HTTP/1.0

Übertragung als Entity-Body mit Content-Type und Content-Length bei der POST-Methode:

 
POST /path/echo.phtml HTTP/1.0
Content-Type: application/x-www-form-urlencoded                     
Content-Length: 10 

x=123&y=56

Wie wird Information zum Server gesendet ?

Rückgabe durch Stdout "Datei" im richtigen Format: HTML

MIME Inhaltstyp

Content-Type: m-type/m-stype

Beispiele

Ortsangabe

Location: ftp://host/dir/dateix.txt

Der Client erzeugt eine FTP-Verbindung

Wie wird Information vom Client aufbereitet ?

Formulare: (X)HTML <form> Element

Attribut mit zwei Werten

Daten des Formulars

Grundaufbau CGI Program

  1. Feststellen der Übertragungsmethode
    Ansehen der Umgebungsvariablen REQUEST_METHOD.
    Mögliche Werte: GET, POST, HEAD

  2. Lesen von CONTENT_LENGTH Bytes von QUERY_STRING oder Stdin.

  3. URL Dekodierung der Zeichenkette.

  4. Aufspaltung der Zeichenkette entlang &.

  5. Aufspaltung der Paare name=content entlang =.

  6. Verwenden der so aufbereiteten Informationen.

Spezifikation

CGI 1.0 oder 1.1:

Alle Spezifikationen der Version 1.1 sollen auch von zukünfigen Erweiterungen erfüllt werden.


Zusammenfassung und Ausblick


© Universität Mannheim, Rechenzentrum, 1998-2007.

Heinz Kredel

Last modified: Sun Jan 28 13:21:08 CET 2007