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

Post on 05-Apr-2015

106 views 0 download

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

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

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

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).

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

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

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)

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)

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

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

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 %

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

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

Seite 1302.11.2005

Common Gateway Interface. Konzepte.

AnwenderName=tit04+agr&AnwenderMail=tit04agr@yahoo.de&Text=Das+ist+e

in+Text+für+Euch

Formulardatenstrom:

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

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