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&[email protected]&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