HTTP: Hypertext Transfer Protocol
Willemers Informatik-Ecke

Diese Website finden Sie in Zukunft unter http://www.willemer.de/informatik/net/http.htm

Das Hypertext Transfer Protocol (HTTP) ist das Protokoll, das vor allem zwischen Browsern und Webservern verwendet wird, um im World Wide Web HTML-Dokumente auszutauschen.

Der Standardport ist 80. Die Übertragung erfolgt unverschlüsselt. Die aktuelle Version von HTTP/2 und ist in RFC 7540 definiert.

Als verschlüsselte Variante steht HTTPS zur Verfügung, die standardmäßig den Port 443 verwendet.

HTTP kennt die Kommandos:

GET-Anfrage

Der Client sendet eine Zeile an den Server. Leerzeichen und Sonderzeichen dürfen in der URL nicht auftreten. Werden sie in den Parametern dennoch benötigt, werden Leerzeichen beispielsweise durch %20 dargestellt. Andere Zeichen werden durch eine URL-Codierung umgesetzt, die von der Zeichencodierung abhängig ist.

Der Request-Header der GET-Anfrage übermittelt folgende Informationen an den Server:

Im Anschluss an das Senden der Anfrage, wartet der Client auf die Antwort des Servers.

POST-Anfrage

Eine POST-Anfrage folgt der gleichen Struktur wie eine GET-Anfrage. Allerdings sendet POST keine Parameter per URL. Die Parameter werden im Message Body (Payload) transportiert. Die GET-Anfrage ist dafür gedacht, Anfragen zu stellen, die keine Änderungen an den Server-Ressourcen verursachen. Die Parameter beschreiben lediglich die angeforderten Daten. POST-Parameter sind dafür gedacht, Server-Ressourcen zu ändern.

Antwort einer Anfrage

Die erste Zeile gibt den Status zurück. Die Angaben werden durch Leerzeichen getrennt und haben folgenden Inhalt: Die Antwort einer erfolgreichen Anfrage lautet beispielsweise:
HTTP/1.1 200 OK

Weitere Angaben werden im HEADER gemacht:

Es folgt der BODY der Antwort mit den eigentlichen Daten.

HTTP-Status-Codes

Der Server antwortet auf Anfragen mit einem Status-Code in Form einer dreistelligen Zahl.

Basis Zahlencode Bedeutung
1xx Informativ
2xx Erfolgreich
200 OK
201 Created
202 Accepted
204 No Content. Anfrage ok, aber kein neuer Inhalt
3xx Es sind weitere Aktionen erforderlich
300 Mehrere Auswahlmöglichkeiten
301 Permanent auf anderer URL
302 Temporär auf anderer URL
304 Inhalt ist unverändert
4xx Fehler des Client
400 Fehlerhafte Anfrage, etwa ungültige URL
401 Nicht authorisiert
403 Verboten
404 Nicht gefunden
5xx Fehler des Servers
500 Interner Serverfehler
501 Nicht implementiert
502 Falsches Gateway (Proxy-Anwendung)
503 Server ist überlastet
505 HTTP-Version nicht unterstützt

Tools

CURL

Um HTTP-Anfragen zu testen und deren Parameter näher kennenzulernen, eignet sich das Tool cURL.

Mit dem folgenden Befehl wird die Webseite per GET geladen und auf der Standardausgabe angezeigt. Durch die Option -v werden aber auch die im Protokoll übermittelten Parameter angezeigt.

curl -v www.willemer.de/informatik/index.htm

wget

Mit dem Befehl wget kann eine Datei per HTTP aus dem Internet geladen und auf dem lokalen Computer gespeichert werden.
wget www.willemer.de/informatik/index.htm
wget www.willemer.de/java4d.jpg
Der erste Befehl lädt die HTML-Datei index.htm, der zweite Befehl die Bilddatei java4d.jpg.