13.07.2012 Aufrufe

2. Www-Protokolle und -Formate HTTP (1)

2. Www-Protokolle und -Formate HTTP (1)

2. Www-Protokolle und -Formate HTTP (1)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!