2. WWW-Dienst im Internet Inhalt:  HTTP, allgemeiner syntaktischer Aufbau  Standardablauf der Kommunikation und wichtige Methoden des http-Protokolls  http-Nutzung durch einen Web-Browser  Aufbau von Web-Applikationen unter Nutzung von HTTP, HTML, DOM, XML  Javascript  3-Tier-Architekturen von Web-Applikationen  Kurze Einführung zu PHP  4-Tier-Architekturen  PHP und Datenbankzugriff

Peter Sobe

Internettechnologien

1

HTTP (1) Der syntaktische Aufbau der HTTP Nachrichten ist hier durch ein s.g. Syntaxdiagramm beschrieben das nach der Backus-Naur-Form aufgebaut ist. 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 Wiederholung, aber beinhaltet auch die Möglichkeit, dass keine Nachrichten-Header vorhanden sind. Peter Sobe

Internettechnologien

2

HTTP (2) Die Folge der Header muss durch ENTER (CR- und LF-Zeichen) abgeschlossen sein. Dann folgt unbedingt eine Leerzeile repräsentiert durch CRLF. Danach kann ein Nachrichten-Körper (body) kommen oder nicht. Aufbau einer Anforderung (Request) Diese beginnt mit der Anforderungszeile. Danach können im Header-Teil allgemeine Header, Anforderungs-Header oder EntityHeader vorhanden sein. Request

Peter Sobe

= Request-Line *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ] Internettechnologien

3

HTTP (3) 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 (in der Regel HTTP/1.0) 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

Beispiele: GET /beispiel.html HTTP/1.0 OPTIONS * HTTP/1.0 Peter Sobe

Internettechnologien

4

HTTP (4) Der Stern"*" 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 obigen 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.

Peter Sobe

Internettechnologien

5

HTTP (5) 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 Peter Sobe

Internettechnologien

6

HTTP (6) 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 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

Peter Sobe

Internettechnologien

7

HTTP (7) 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.

Peter Sobe

Internettechnologien

8

HTTP (8) 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. Peter Sobe

Internettechnologien

9

HTTP (9) HEAD- Methode 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. Peter Sobe

Internettechnologien

10

HTTP (10) 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.

Peter Sobe

Internettechnologien

11

HTTP (11) 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. Peter Sobe

Internettechnologien

12

HTTP und Darstellung XML Dokumente HTTP überträgt auch XML! Durch die XML-Unterstützung der Browser wird die XMLDatei 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. Peter Sobe

Internettechnologien

13

Kontrollfragen • Ist es vorstellbar, dass ein Webserver auch für andere Dienste im Internet verwendbar wäre? Begründen Sie Ihre Antwort aus der Kenntnis des Kommunikationsmodells! • Sie fordern mit einem MS Internet Explorer über http eine EXCEL-Datei von einem Webserver an! Welche Abläufe erwarten Sie auf dem Client-Rechner? • Welche praktische Bedeutung kommt den EntityHeadern Content-Type und Content-Length zu?

Peter Sobe

Internettechnologien

14

Web-Applikationen unter Nutzung von http Web-Browser Javascript Ajax-Engine

HTTP, HTMLDokumente Externe Skripte und Daten

CGI

XML

WebServer PHP Ajax-Engine

Peter Sobe

Internettechnologien

15

HTML  Kodierungssprache für Webseiten, aus SGML entworfen.  HTML-Dokument wird im message-body durch HTTP übertragen  Beispiel: DOM Demonstration DOM Bild 4.1 Ende Peter Sobe

Internettechnologien

16

HTML Elemente: DOM Attribute: Kombination Element mit Attributen: … Die Elemente  werden durch Tags eingefasst.  und werden hierarchisch ineinander gesetzt Darstellung als Baum mit Elementen auf gleicher Ebene und unter/übergeordneten Elementen möglich. → DOM Document Object Model eines HTML-Dokuments Peter Sobe

Internettechnologien

17

DOM (1) Elemente-Beziehungen im letzten Beispiel: HTML

HTML

BODY

TITLE

H2

P

DOM

Demonstration DOM

IMG

BGCOLOR

P

SRC

Comp2.gif

I Bild der Gruppe Ende

Peter Sobe

Elementknoten

Elementwert

Attributknoten

Attributwert

Internettechnologien

18

DOM (2) DOM dient z.B. in Javascript zum Zugriff auf Elemente der dargestellten Webseite. Beispiel aus jspage.html (siehe Übung am 21.3. und 23.3.2011): Im Skript:

Im HTML-Dokument:

… Peter Sobe