Webbasierte Adressdatenbank

HTTP und CGI

CGI: Das Common Gateway Interface
Die nachfolgende Abbildung (entlehnt aus selfhtml von Stefan Münz) zeigt den Zusammenhang zwischen dem Web-Browser, Web-Server und CGI-Programm.
CGI Protokoll
Der Benutzer (Web-Browser) fordert ein Formular an, dies wird vom Web-Server übertragen. Der Client füllt das Formular aus und sendet es zurück an den Server. Dieser übergibt es dem CGI-Programm. Dort werden die Daten des Formulars bearbeitetet (in unserem Projekt, z.B. eine Adressdatensatz aus der Datenbank geholt) und eine dynamische HTML Seite erzeugt. Diese schickt der Web-Server an den Browser.
Die Datenübertragung findet entweder im  GET  oder im  POST  Modus statt. Mit der  GET  Methode werden die Daten an die aufrufende URL angehängt (sie sind also damit im Browser sichtbar). Der Web-Server weist sie dann der  QUERRY_STRING-Umgebungsvariable  zu, welche vom CGI Programm (z.B. Perl) gelesen wird. Bei der Verwendung vom  POST  werden die Daten im Textkörper übergeben (sie sind damit für den Benutzer unsichtbar), der Web-Server leitet sie dann via  STDIN  an das Programm weiter. Bei dieser Übertragung werden Sonderzeichen als Hexadezimalzahlen kodiert.

HTTP Grundlagen
Das Hypertext Transfer Protocol ist die Sprache, in der der Web-Client und der Web-Server miteinander kommunizieren. Alle HTTP-Transaktionen folgen demselben Grundmuster. Jede Anforderung vom Client, bzw. Antwort des Servers besteht aus einer Anforderungs- oder Antwortzeile, gefolgt von einem Header Teil und dem Body (Entity) Abschnitt.
Schauen wir uns mal eine solche Kommunikation an:
Der Client fordert das Dokument  index.html  mit der  GET  Methode an, und benutzt dabei die Version 1.0 von  HTTP :


    GET /index.html HTTP/1.0
  
    

Anschliessend sendet der Client optionale Header Informationen, hier der Browser Typ und einige Dokumentenvorgaben:


    User-Agent: Mozilla/2.02Gold (WinNT: I)
    Accept: image/gif, image/x-bitmap, image/jpeg, */*
  
    

Der Client sendet zur Beendigung des Headers eine Leerzeile. Danach kann der Client weitere Daten senden z.B. Formularinhalte mit der  POST  Methode.
Der Server antwortet mit einer Statuszeile, die drei Felder enthält: Die HTTP-Version, einem 3 stelligen Statuscode und dem zugehörigen Statustext:


    HTTP/1.0 200 OK
  
    

Danach sendet der Server dem Client noch Header Informationen über sich selbst und das angeforderte Dokument z.B.:


    Date: Fri. 20 Sep 1999 08:17:22 GMT
    Server: Apache/1.3.6 Server
    Last-modified: Mon. 17 Sep 1999 21:53:20 GMT
    Content-type: text/html
    Content-length: 2822
  
    

Auch hier folgt eine Leerzeile als Header-Ende. Danach folgt das eigentliche HTML Dokument.

Literaturhinweise:

Zurück zum Anfang dieses Projekts.