2. WWW-Protokolle und -Formate Inhalt: HTTP, allgemeiner syntaktischer Aufbau Wichtige Methoden des HTTP-Protokolls Aufbau von Web-Applikationen unter Nutzung von HTTP, HTML, DOM XML, XML-DTD und XML-Schema Darstellung von XML-Dokumenten mittels CSS Beispiele für XML-basierte Sprachen 1 HTTP (1) HTTP: Hypertext Transport Protocol Roy Fielding, Tim Berners-Lee ab 1989 Protokoll zum Transport von Web-Inhalten, insbes. HTML Seiten HTTP TCP IP Bestimmt, was angefragt wird und welche Daten zurückgesendet werden Erzeugt Verbindung zwischen Client und Server Ermöglicht Adressierung, Paket-Transfer Der syntaktische Aufbau der HTTP-Nachrichten wird hier durch die Erweiterte Backus-Naur-Form beschrieben. Diese Form beschreibt den Aufbau von Nachrichten durch Sequenz, Alternativen, optionalen Elementen, sich wiederholenden Elementen und entsprechende Schachtelungen. Elemente, die nicht weiter aufgelöst werden, sind s.g. Terminalsymbole, die durch Großschreibung, oder Angabe in Anführungszeichen gekennzeichnet werden. 2
Einschub: Erweiterte Backus Naur Form Sequenz: Hintereinanderschreiben der Elemente e3 e1 e2 Alternative: Hintereinander mit Trennstrich e3 e1 e2 Optionales Element in Sequenz: mit [ ] eingefasst e3 [ e1 ] e2 Wiederholung, ein- oder mehrfach: + Zeichen e4 ( e1 e2)+ e3 Optionale Wiederholung, kein-, ein- oder mehrfach: * Zeichen e4 ( e1 e2)*+ e3 Gruppierung: runde Klammern Beispiel e5 (( e1 e2) (e3 e4))+ Terminalsymbole: Hochkommaschreibweise, oder Großbuchstaben Beispiele (ohne tieferen Sinn) e1 0 1 2 e2 ZEILENUMBRUCH e3 LEERZEICHEN 3 HTTP (2) Eine HTTP- Nachricht ist immer wie folgt aufgebaut: generic-message start-line (message-header CRLF)* CRLF [ message-body ] start-line Request-Line Status-Line Die Nachricht beginnt immer mit einer Startzeile. Schickt der Nutzer eine Anforderung (Request), ist es eine Request-Zeile. Antwortet der Server ist es eine Status-Zeile. Danach können mehrere so genannte Nachrichten-Header kommen. Der Stern bedeutet optionale Wiederholung und schließt auch die Möglichkeit ein, dass keine Nachrichten-Header vorhanden sind. Das Terminalsymbol CLRF ist der Zeilenumbruch (Carriage Return Line Feed) 4
HTTP (3) Die Folge der Header muss durch ein CRLF-Zeichen abgeschlossen sein. Dann folgt unbedingt eine Leerzeile, repräsentiert durch ein einzelnstehendes CRLF. Danach kann optional Nachrichten-Körper (body) folgen. Aufbau einer Anforderung (Request) Diese beginnt mit der Anforderungszeile. Danach können im Header-Teil allgemeine Header, Anforderungs-Header oder Entity- Header vorhanden sein. Request Request-Line ( ( general-header request-header entity-header ) CRLF )* CRLF [ message-body ] 5 HTTP (4) Die Anforderungszeile (Request-Line) besteht aus drei Teilen, die durch Leerzeichen (SP) getrennt sind. Der erste Teil ist die Methode (z.b. GET), der zweite Teil die Anforderungs-URI (z.b. /beispiel.html), und der dritte Teil die HTTP-Version. Request-Line Method SP Request-URI SP HTTP-Version CRLF Method "OPTIONS" "GET" "HEAD" "POST" "PUT" "DELETE" "TRACE" "CONNECT" Request-URI "*" absoluteuri abs_path authority HTTP-Version "HTTP/1.0" "HTTP/1.1" Beispiele: GET /beispiel.html HTTP/1.0 OPTIONS * HTTP/1.0 6
HTTP (5) Der Stern "*" als Request-URI heißt, dass sich die Anforderung nicht auf eine bestimmte Ressource bezieht. Mit OPTIONS werden vom Server die unterstützten Methoden erfragt, ohne sich auf ein gespeichertes Dokument zu beziehen. Die GET-Methode dagegen fordert das Dokument beispiel.html an. Das /-Zeichen bezeichnet das Wurzelverzeichnis des Webservers. Die Angabe der Methode muss in Großbuchstaben erfolgen. In den vorangegangenen Beispielen ist weder ein Header- noch ein Body-Teil vorhanden, aber der Anforderungszeile muss unbedingt eine Leerzeile folgen. Aufbau einer Antwort (Response) Der Aufbau ist analog zur Anforderung. Nur ist die erste Zeile jetzt eine Status-Zeile und im Header-Teil stehen statt den Anforderungs-Headern die Antwort-Header. 7 HTTP (6) Aufbau einer Antwort (Response) Der Aufbau ist analog zur Anforderung. Nur ist die erste Zeile jetzt eine Status-Zeile und im Header-Teil stehen statt den Anforderungs-Headern die Antwort-Header. Response Status-Line ( ( general-header response-header entity-header ) CRLF )* CRLF [ message-body ] Die Status-Zeile (Status -Line) besteht aus drei Teilen, die durch Leerzeichen (SP) getrennt sind. Der erste Teil ist die unterstützte http-version, der zweite Teil enthält den Status-Code (z.b. 200), und der dritte Teil die Texterklärung zum Code (z.b. OK). Status-Line HTTP-Version SP Status-Code SP Reason-Phrase CRLF 8
HTTP (7) Das WWW-Konsortium hat im http-standard festgelegt, dass die drei Methoden OPTIONS, GET und HEAD auf jeden Fall durch einen Webserver zu unterstützen sind, aber auch künftige Erweiterungen der Methoden möglich sind. Typischerweise ist die Methode POST zur Übertragung von Eingabedaten (z.b aus HTML-Formularen) auf Webseiten zugelassen. Es sind auch einige Methoden, wie SEARCH, LOCK usw. vorhanden, die nicht im Standard aufgeführt sind. Im Standard enthalten, aber oft nicht implementiert oder abgeschaltet: PUT und DELETE 9 HTTP (8) GET- Methode Die GET-Methode ist die am häufigsten eingesetzte Methode bei einer Client-Anforderung. Damit wird ein Dokument beim Webserver zum Herunterladen angefordert. Der Name des Dokumentes und eventuell sein Pfad müssen in der Request-URI angegeben sein. Beispiel: GET /beispiel.html HTTP/1.0 Das /-Zeichen steht für die Wurzel des Publikationsverzeichnisses des Webservers. Im Wurzelverzeichnis wird die Datei beispiel.html angefordert. 10
HTTP (9) GET- Methode, Antwort: Nach der Leerzeile ist der Inhalt des body zu sehen, d.h. der Inhalt des angeforderten Dokumentes in HTML. Allgemeiner Header: Date Response-Header: Server, Accept-Ranges und ETag. Entity-Header: Content-Type, Content-Length und Last-Modified. Sie beziehen sich auf das gesendete Dokument. ETag enthält einen serverseitig eindeutigen Identifizierer für das Dokument. 11 HEAD- Methode HTTP (10) Die HEAD-Methode arbeitet fast identisch zur GET-Methode, nur dass das angeforderte Dokument vom Server nicht gesendet wird. Die Header werden wie bei GET in der Antwort gesetzt und erlauben damit eine Identifikation des Dokumentes. Beispiel: HEAD /xml1.xml HTTP/1.0. Ergebnis siehe Bild. Im Content-Type-Header ist text/xml angegeben. 12
HTTP (11) OPTIONS- und TRACE-Methoden Die OPTIONS-Methode dient zur Anzeige der durch den Webserver unterstützten Methoden. Beispiel: OPTIONS * HTTP/1.0. Die TRACE-Methode dient nur zur Feststellung, ob der Webserver arbeitet und ansprechbar ist. Seine Antwort ist das Zurücksenden der Anforderung im body. Es werden einige wichtige Header gesetzt. Das Bild unten zeigt die Server-Antwort auf die Anforderung Beispiel: TRACE / HTTP/1.0. 13 HTTP (12) POST-, PUT- und DELETE-Methoden POST-Methode - Übertragung von Datenpaketen vom Client zum Server. Hauptsächlich wird sie eingesetzt, wenn ein angefordertes HTML-Dokument Formularelemente für Nutzereingaben enthält. Die eingegebenen Daten werden dann an ein serverseitig vorhandenes Programm (Script) zur Weiterverarbeitung gesendet (serverseitiges Scripting). PUT-Methode - Übertragung von kompletten Dokumenten vom Client zum Server. Diese werden unter dem angegebenen Namen durch den Webserver im angegebenen Verzeichnis abgelegt. Es muss ein authentifizierter Zugriff erfolgen und Kennwort und Passwort mit übermittelt werden. Die hochzuladende Datei muss im body angeben werden. DELETE-Methode löscht die angegebene Datei aus dem Verzeichnis; authentifizierter Zugriff wird vorausgesetzt. 14
HTTP und Darstellung von XML-Dokumenten HTTP überträgt auch XML! Durch die XML-Unterstützung der Browser wird die XML- Datei so dargestellt, dass die Elementhierarchie des Dokumentes sichtbar wird. Siehe Bild rechts. Ist in die XML-Datei eine XSL-Datei eingebunden, wird diese auch ausgeführt, sodass man das transformierte Dokument sieht. Umwandlung auch über CSS möglich. 15 Web-Anwendungen unter Nutzung von HTTP Web-Browser Javascript Ajax-Engine HTTP, HTML- Dokumente XML Externe Skripte und Daten CGI Web- Server PHP 16