Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu...

14
Seite 1 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1 Einleitung 2 Was ist CGI? 3 Wozu wird CGI verwendet? 4 Geschichtlicher Überblick 5 Grundvoraussetzungen für CGI 6 Programmiersprachen für CGI-Skripte 7 Formulare und CGI 8 Zusammenspiel zwischen Browser – Webserver – CGI- Skript 9 Wie verarbeitet der Browser die Informationen für den Server? 9 Formulardaten übertragen mit GET 10 Formulardaten übertragen mit POST 11 Formulardatenstrom 12 Sonstiges

Transcript of Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu...

Page 1: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 102.11.2005

Common Gateway Interface. Konzepte.

Übersicht

1 Einleitung2 Was ist CGI?3 Wozu wird CGI verwendet?4 Geschichtlicher Überblick5 Grundvoraussetzungen für CGI6 Programmiersprachen für CGI-Skripte 7 Formulare und CGI 8 Zusammenspiel zwischen Browser – Webserver – CGI-Skript 9 Wie verarbeitet der Browser die Informationen für den Server? 9 Formulardaten übertragen mit GET10 Formulardaten übertragen mit POST 11 Formulardatenstrom12 Sonstiges

Page 2: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 202.11.2005

Common Gateway Interface. Konzepte.

Einleitung

• Früher: WWW = Ansammlung von HTML-Dokumenten

• Problem: die zu präsentierende Datenmenge wächst schnell, Erzeugung der Seiten „zu Fuß“ wird immer schwerer

• Notwendigkeit: serverseitig dynamische Websites

• Ein Programm (extern oder auf dem Webserver) muss „on the fly“ und dynamisch die Seite generieren

Page 3: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 302.11.2005

Common Gateway Interface. Konzepte.

Was ist CGI?

• Common Gateway Interface („allg. Vermittlungsrechner-Schnittstelle“). Ermöglicht eine Client-Server Interaktion für das WWW

• Älteste Variante, Webseiten dynamisch bzw. interaktiv zu gestalten

• Schnittstelle zwischen Programmen (Scripts) auf Webservern und den sie aufrufenden Webbrowsern

• Serverseitige Programme können sowohl Daten vom Browser empfangen (z.B. Formulareinträge) als auch neu generierte Daten an den Browser verschicken (z.B. HTML-Seite).

Page 4: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 402.11.2005

Common Gateway Interface. Konzepte.

Wozu wird CGI verwendet?

• Daten zum Webserver schicken & individuelle Daten vom Webserver zum Client senden

• Starten von Programmen auf dem Webserver zur Verarbeitung

• Anwendungsbeispiele: Erstellung eines Warenkorbs, Bestell- u. Buchungssysteme, Auslesen von Cookies oder User-/Client-Daten

Page 5: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 502.11.2005

Common Gateway Interface. Konzepte.

Geschichtlicher Überblick

Die Entstehung von CGI: • HTTP-Spezifikation ermöglicht erstmals, Daten als Website darzustellen• Komplexität der Datenmengen wächst sehr schnell• Notwendigkeit: Clients müssen auch Daten auf dem Webserver speichern/modifizieren können -> Verarbeitung von Formularen

Common Gateway Interface

Page 6: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 602.11.2005

Common Gateway Interface. Konzepte.

Grundvoraussetzungen für CGI

Der Webserver muss der CGI-Schnittstelle 3 Dinge zur Verfügung stellen:

• Umgebungsvariablen (z.B. SERVER_NAME) (informiert das CGI über aktuelle Einstellungen)

• Weiterleitung von Ausgaben (dynamische HTML-Seite/Seitenteile)

• Einholen von Formulareingaben oder Aufrufparametern (damit das CGI hierauf reagieren kann)

Page 7: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 702.11.2005

Common Gateway Interface. Konzepte.

Programmiersprachen für CGI-Skripte

• C/C++

• Java

• Sämtliche Unix-Shell-Skriptsprachen (sh, bash etc.)

• TCL

• Python

• DOS-Batchdateien

• Häufig verwendet: PERL (plattformübergreifend)

Page 8: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 802.11.2005

Common Gateway Interface. Konzepte.

Formulare und CGI

• Formulare und CGI erweitern durch ihre Interaktivität die Funktionalität von HTML und damit des WWW erheblich

• Einsatzbereiche:

• dynamische Webseiten, die aus einer DB erzeugt werden

• Interaktion zw. Benutzer u. Server durch Formulare

• Passwortschutz von Webseiten

Page 9: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 902.11.2005

Common Gateway Interface.Konzepte.

Browser Webserver CGI-Skript

1. Webseite (Formular) anfordern

2. Webformular liefern

3. Ausgefülltes Formular senden

4. CGI-Skript mit Formulardaten starten

5. Seite generieren u. Antwort senden

Zusammenspiel zwischen Browser – Webserver – CGI-Skript

Page 10: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 1002.11.2005

Common Gateway Interface. Konzepte.

Wie verarbeitet der Browser die Informationen für den Server?

Übliche Vorgehensweise bei Links:

• Parameter werden an die URL angehängt

• & trennt Formularelemente

• = trennt Name u. Daten eines Formularelements

• ? trennt Parameter vom Skriptnamen

• + ersetzt Leerzeichen

• Sonderzeichen (ASCII-Werte 128 bis 256) in Hex-Code, eingeleitet

durch %

Page 11: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 1102.11.2005

Common Gateway Interface.Konzepte.

Formulardaten übertragen mit GET

GET

• Angabe von method=„get“ im <form>-Tag

• Übertragung zum Server, Daten werden im QUERY_STRING zwischengespeichert

• CGI-Skript liest die Formulardaten aus dem QS aus

GET /cgi-bin/eingabe.cgi?x=123&y=456 HTTP/1.1

Page 12: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 1202.11.2005

Common Gateway Interface.Konzepte.

• Post• Angabe von method=„post“ im <form>-Tag • Formulardaten werden direkt an die Adresse übertragen• Auslesen über die Standardeingabe, abhängig von CONTENT_LENGTH

POST /cgi-bin/eingabe.cgi HTTP/1.1Content-Type: application/x-www-form-urlencodedContent-Length: 11

x=123&y=456

Formulardaten übertragen mit POST

Page 13: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 1302.11.2005

Common Gateway Interface. Konzepte.

AnwenderName=tit04+agr&[email protected]&Text=Das+ist+e

in+Text+für+Euch

Formulardatenstrom:

<FORM METHOD="GET" ACTION="eingabe.cgi">

Page 14: Seite 0 02.11.2005 Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.

Seite 1402.11.2005

Common Gateway Interface. Konzepte.

Sonstiges

Sicherheit:

• Über CGI gestartete Programme dürfen nur bestimmte eingeschränkte Typen von Programmroutinen ausführen, (z.B. kein Löschen von Dateien des Webservers)

Apache ist geschützt durch das Modul „suexec“

Nachteil:

• Langsamer als z.B. Servlets, da für jeden CGI-Aufruf eine neue Programm-Instanz ausgeführt werden muss