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