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 fragt nach einer Datei unter Angabe einer URL. Die URL kann um Anfrageparameter ergänzt werden, die von einem Fragezeichen abgetrennt, angehängt werden.
- POST sendet Daten an den Server. Typischerweise sind dies Wertepaare, die aus der FORM eines HTML-Dokuments stammen. Die Datenmenge ist weitgehend unbegrenzt und ist verschlüsselt, wenn als Protokoll HTTPS verwendet wird. Mit den übergebenen Daten können Server-Ressourcen angelegt oder verändert werden.
- DELETE erfragt das Löschen einer Server-Ressource.
- PUT dient zum Hochladen von Dateien. Die URL gibt das Ziel an. Ist unter der URL bereits eine Datei vorhanden, wird sie überschrieben.
- HEAD liefert nur den HEADER eines Dokuments, nicht den gesamten BODY.
GET-Anfrage
Der Client sendet eine Zeile an den Server.- Das Schlüsselwort GET
- (optional) Der Pfad zur Datei
- (optional) Ein Fragezeichen, wenn Parameter folgen
- (optional) Parameterangaben, die untereinander durch & separiert sind:
- Variable
- Gleichheitszeichen
- Wert
- Protokollangabe mit Version, beispielsweise: HTTP/1.1
Der Request-Header der GET-Anfrage übermittelt folgende Informationen an den Server:
- Host: Adressat
- User-Agent: Mozilla etc, auch Plattform
- Accept: MIME-Formate, mehrere Angaben sind möglich.
- Accept-Language: Sprache
- Accept-Encoding: gzip
- Accept-Charset: ISO-8859-1 utf-8
- Keep-Alive: 300
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.- Auf diese Weise sind die Paramter in ihrem Umfang nicht beschränkt.
- Die Parameter werden im BODY transportiert. Dieser ist bei HTTPS verschlüsselt. Dagegen ist die URL nie verschlüsselt.
- Allerdings lassen sich auf POST-Anfragen keine Lesezeichen setzen. Bei GET-Anfragen funktioniert das.
Antwort einer Anfrage
Die erste Zeile gibt den Status zurück. Die Angaben werden durch Leerzeichen getrennt und haben folgenden Inhalt:- Protokoll und Version.
- HTTP-Status code
- Klartext des Status
HTTP/1.1 200 OK
Weitere Angaben werden im HEADER gemacht:
- Set-Cookie
- Content-Type: MIME, beispielsweise text/html
- Content-Length: 3554
- Date:
- Server: hier meldet sich beispielsweise Apache
- Connection: close
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.jpgDer erste Befehl lädt die HTML-Datei index.htm, der zweite Befehl die Bilddatei java4d.jpg.