Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael Gründler Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler CGI Gliederung Teil I Motivation / Was ist CGI Funktionsweise Die Schnittstelle CGI-Sprachen Vom Client zum Server Exkurs nach HTML-Forms Die Methoden Get und Post Übergabe und Kodierung Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler CGI Gliederung Teil II Vom Server zum Client Dekodierung der Eingabedaten Umgebungsvariablen Erzeugung von HTML Dokumenten Header Versteckte Felder und Cookies Sicherheitsaspekte Abschließende Bemerkungen Quellen Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Motivation CGI ermöglicht: Zugriffszähler Gästebücher Datenbankabfragen Animation Formularabfragen Online-Registrierungen Realisierung von Suchmaschinen... Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Was ist CGI ? Common Gateway Interface (Allgemeine Vermittlungsrechner-Schnittstelle) aktuelle Version CGI/1.1 Übertragung mittels HTTP Protokoll ermöglicht dynamisch HTML-Dokumente zu erstellen ermöglicht externe Programme aus HTML Dokumenten heraus zu starten dient als Gateway für z.B. Datenbanken Seminar Internet-Technologien Thema: CGI / Michael Gründler
Funktionsweise vom CGI Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Die Schnittstelle WWW-Server muß CGI unterstützen Verzeichnis festlegen, meist cgi-bin Benutzer muß Berechtigung haben, CGI-Programme auszuführen CGI ist sprachunabhängig Folgende Bedingungen müssen erfüllt sein: Lesen von Standard in Schreiben auf Standard out Zugriff auf Umgebungsvariablen muß möglich sein Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler CGI Sprachen Alle Sprachen möglich, die die 3 Bedingungen erfüllen Perl oft benutzt Interpretersprache kann gut mit regulären Ausdrücken umgehen bietet gute und einfache Möglichkeiten der Textmanipulation ist noch frei erhältlich auch C, C++, TCL, Basic... Seminar Internet-Technologien Thema: CGI / Michael Gründler
Exkurs nach HTML-FORMS I Formulare erstellen mit HTML-FORMS <FORM ACTION ="/cgi-bin/programm.pl" METHOD ="POST"> leitet ein Formular ein <INPUT TYPE ="TEXT" NAME="name" VALUE ="value" SIZE ="size"> erstellt ein Textfeld Scroll-Listen Radiobuttons Checkbox Menues Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Beispiel HTML-FORMS Seminar Internet-Technologien Thema: CGI / Michael Gründler
Exkurs nach HTML-FORMS II Submit Button Absende Button Reset-Button "Lösch" Button </FORM> beendet Formular Seminar Internet-Technologien Thema: CGI / Michael Gründler
Die Methoden GET und POST Eingabedaten werden an die URL herangehängt Server übermittelt Daten an QUERY_STRING Vorteil nicht unbedingt Formular erstellen schneller als POST Nachteil Lesbarkeit der URL leidet zu lange Anfragestrings werden von manchen Browsern abgeschnitten werden Seminar Internet-Technologien Thema: CGI / Michael Gründler
Die Methoden GET und POST Anfragedaten werden nicht transparent übertragen, sondern über die Standardeingabe Vorteil Eingabedaten können beliebig lang sein Nachteil URL kann nicht als Bookmark gespeichert werden Seminar Internet-Technologien Thema: CGI / Michael Gründler
Übergabe und Kodierung Bildung von KEY/VALUE - Paaren Paare werden durch & voneinander getrennt KEY und VALUE werden durch = voneinander getrennt Leerzeichen werden durch + ersetzt Umlaute, Sonderzeichen durch hexadezimalen ASCII Code ersetzt, % dient als Kennung Beispiel: vorname=Michael+J%FCrgen&nachname=Gr%FCndler Seminar Internet-Technologien Thema: CGI / Michael Gründler
Dekodierung der Eingabedaten Lese REQUEST_METHOD, und ermittle das Request-Protokoll (Post oder Get) Bei "Get" QUERY_STRING auslesen Bei "Post" CONTENT_LENGTH auslesen und Anzahl Zeichen von STD IN lesen QUERY_STRING bei "&" zerlegen, separiert die Key/Value Paare Hexadezimal- und Pluszeichen dekodieren Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Umgebungsvariablen WWW-Server stellt Umgebungsvariablen zur Verfügung Client übergibt Informationen an Server, der schreibt sie in die Umgebungsvariablen CGI- Programme müssen darauf zugreifen können Nicht alle werden benutzt, oder unterstützt Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Umgebungsvariablen Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Ausgabe vom CGI Grundlegende Ausgabe: Text oder HTML Dokument aber auch Grafik oder Binärdatei Anweisung: Virtuelles Dokument in Cache aufnehmen HTTP Statuskodes an Browser senden Server anweisen, ein vorhandenes Dokument zu senden Seminar Internet-Technologien Thema: CGI / Michael Gründler
Erzeugung von HTML-Dokumenten CGI Programm schreibt Ausgabe auf Standard-Ausgabe Server leitet alles von Standard Ausgabe zum Client (Browser) Beispiel in Perl #!/usr/local/bin/perl print "CONTENT_TYPE: text/html", "\n\n"; print"<HTML>","\n; print"<HEAD><TITLE>Erstes Mal</TITLE></HEAD>", "\n"; print"<BODY><H1>...</H1>","\n"; print"</BODY></HTML>", "\n"; exit(0) Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Header Header, damit Client mit Dokument umgehen kann Header in beliebiger Reihenfolge Wichtig: Header mit Leerzeile abschließen! Vollständige und unvollständige Header WWW-Server vervollständigt Header Wenn CGI einen vollständigen Header erstellt, dann präfix nph (Non Parsed Header) vor CGI-Programm, sendet direkt zum Client Vorsicht: Server kann Header nicht mehr korrigieren! Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Header Seminar Internet-Technologien Thema: CGI / Michael Gründler
Versteckte Felder und Cookies Komplexe Dialoge mit mehreren Formularen erfordert Speicherung von Informationen unterschiedliche Strategien versteckte Felder: Informationen werden transparent für Benutzer im Formular gespeichert, - Formulare werden immer länger Persistent Cookies Datei auf Client-Seite, Anzahl und Größe ist beschränkt Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Sicherheitsaspekte Niemals Benutzereingaben ungeprüft auf Betriebssystemebene senden print ´$QUERY_STRING´; rm -fr / CGI-Programme laufen meist unter root Rechte, da Ports unter 1024 root-Rechte benötigen. Besser "Wrapper" benutzen. Durch Wrapper können Server und Programme mit beliebiger Kennung mit eingeschränkten Rechten betrieben werden Keine Passwortabfrage möglich, als Tag enthalten, aber unverschlüsselte Übertragung Seminar Internet-Technologien Thema: CGI / Michael Gründler
Abschließende Bemerkungen Kommerzielle Anbieter: ISAPI von Microsoft NSAPI von Netscape FastCGI, baut auf CGI auf Datenbankanbindung über erweiterte HTML-Sprachen (SELECT,...) Client-seitige Vorverarbeitung von Eingabedaten durch Java-Script Seminar Internet-Technologien Thema: CGI / Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler Literatur, Quellen CGI Programmierung im World Wide Web von Shishir Gundavaram, O´Reilly International Thomson Verlag Offizielle CGI Spezifikation: http://hoohoo.ncsa.uiuc.edu/cgi/interface.html SelfHTML 6.1 HTML Dateien selbst erstellen von Stefan Münz unter beliebiger Suchmaschine Suchstring "CGI" oder CGI-Programmierung" eingeben. Seminar Internet-Technologien Thema: CGI / Michael Gründler