Webdesign mit CSS, XHTML und Javascript
Stil mit {stil}
Aug 2007
Der HTTP-Request
Für die Kommunikation im WWW werden verschiedene Protokolle eingesetzt. Protokolle definieren Regeln für den Austausch von Nachrichten und die Formatierung von Daten zwischen Browser und Server. Die prominentesten Protokolle des Webs sind HTTP (Hypertext Transfer Protocol) und FTP (File Trqnsfer Protocol).

- Wenn der Benutzer eine Adresse in das Adressfeld seines Browsers eingibt oder ein Formular an die Adresse im action-Attribut absendet, wird die Adresse als HTTP-Request an den Server geschickt. Der Browser ist der HTTP-Client und der Server ist der HTTP-Server.
HTTP ist ein zustandloses Protokoll – nach einer erfolgreichen Datenübertragung muss die Verbindung zwischen dem Client und dem Server nicht aufrecht erhalten werden. Bei der Übertragung weiterer Daten muss der Client eine neue Verbindung aufbauen, die nichts über den vorangegangenen Ablauf weiß. Für eine Webseite mit vier Bildern und einem Stylesheet waren beim HTTP 1.0-Protokol sechs Anfragen erforderlich, das HTTP 1.1-Protokoll hingegen kann mehrere Anfragen und Antworten innerhalb einer Verbindung austauschen und abgebrochene Verbindungen fortsetzen.
Den Transfer von Informationen von einer HTML-Seite auf die nächste Seite – z.B. bei mehrseitigen Formularen – muss aber weiterhin eine gesonderte Technik (Cookies, Query-String, PHP-Session) implementieren.
HTTP-Request und HTTP-Response
The HTTP Request
Nach dem Aufbau einer Verbindung zum Server überträgt der HTTP-Client einen Request in einem festgelegten Format:
- eine Anfangszeile
- eine Reihe von Headerzeilen (bei HTTP 1.0 optional, in HTTP 1.1 muss die Zeile Host im Request angegeben werden)
- eine Leerzeile
- eine Nachricht (optional)
Die dreiteilige Anfangszeile besteht aus dem Namen der Methode, dem Pfad zur angeforderten Resource und der verwendeten HTTP-Version. Eine typische Anfrage kann folgendermaßen aussehen
HTTP 1.0 Request
GET /test.html HTTP/1.0
HTTP 1.1 Request (Angabe einer voll qualifizierten URL und die Headerzeile HOST erforderlich)
GET http://wisotop.de/test.html HTTP/1.1 HOST: wisotop.de
Headerzeilen senden zustäzliche Informationen über den Request oder die Daten des Nachrichtenbodys, z.B. die gewünschte Sprache. Jede Headerzeile vermerkt ein Name-/Wertpaar, wobei Name und Wert durch einen Doppelpunkt getrennt werden.
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.0.4)
Gecko/20060508 Firefox/1.5.0.4
Accept: */*
Das Acceptfeld signalisiert dem Server, welche Formate der Client akzeptiert. Da moderne Server nahezu alle Formate verarbeiten können, wird meist der Mime-Typ */* verwendet.
HTTP-Response
Als Antwort auf einen derartigen Request sendet der Server eine HTTP-Response, wobei die erste Zeile auch als Statuszeile bezeichnet wird. In dieser Zeile gibt der Server die HTTP-Version als Echo zurück sowie einen Response-Statuscode im Form von drei Ziffern und eine kurze Textnachricht, die als Reason Phase bezeichnet wird.
HTTP/1.1 200 OK Server: Apache/2.0.49 Content-Language: de Content-Type: text/html User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8
Der Response-Statuscode und die Reason Phase sind Klartext-Mitteilungen derselben Nachricht, wobei die Reason Phase von Server zu Server ein wenig variieren kann.
| Status Code | Erklärung |
|---|---|
| 1** - Information | Informationsmeldungen |
| 2**—Success | Die Anfrage wurde erfolgreich durchgeführt |
| 200 - OK | Die Anfrage war erfolgreich |
| 204 - No Content | Das Dokument enthält keine Daten |
| 3**—Redirected | für eine erfolgreiche Bearbeitung der Anfrage werden weitere Informationen benötigt |
| 301 - Moved Permanently | Das angefragte Dokument ist dauerhaft zu einer anderen URI umgezogen |
| 4**—Client error | Wahrscheinlich liegt die Ursache für das Scheitern einer Anfrage beim Client |
| 401 - Not Authorized | Der Request muss vom Benutzer authentifiziert werden |
| 403 - Forbidden | Der Server weist den Request zurück |
| 404 - Not Found | Die angeforderte Resource existiert nicht |
| 5**—Server error | |
| 500 - Internal Server Error | wahrscheinlich liegt die Ursache des Scheitern einer Anfrage bei Server |
| 501 - Not Implemented | |
| 503 - Service Unavailable |
Die Antwort kann ebenfalls Headerzeilen enthalten, von denen jede aus einem Header und einem Wertepaar besteht.
HTTP Status Code: HTTP/1.1 200 OK Server: Apache/2.0.49 (Linux/SuSE) Date: Thu, 13 Jul 2006 07:19:43 GMT Content-Type: text/html Connection: close
Die HTTP-Request-Methoden
| GET | Inhalte vom Server anfordern. |
| POST | Inhalte vom Server anfordern und zusätzlich einen Datenblock aus Name-/Wertpaaren (z.B. aus einem Formular) übermitteln. Grundsätzlich können Daten auch mit GET übertragen werden, aber die zulässige Datenmenge bei POST ist größer. |
| HEAD | weist den Server an, den HTTP-Header, nicht jedoch den Inhalt des Dokuments zu senden. So kann z.B. die Existenz einer gelinkte Seite geprüft werden. |
| PUT | Dateien auf den Webserver laden. Wird aus Sicherheitsgründen kaum implementiert. |
| DELETE | löscht die Datei auf dem Server. Wird aus Sicherheitsgründen kaum implementiert. |
| TRACE | liefert die Anfrage so zurück, wie der Server sie empfangen hat. Wird z.B. für das Debuggen von Verbindungen benutzt, ist aber auf vielen Servern aus Sicherheitsgründen nicht implementiert. |
| CONNECT | wird von Proxy-Servern implementiert |
