Kommunikation mit dem HTTP Protokoll
HTTP (HyperText Transfer Protocol) steht für ein zustandsloses Protokoll, das
die Regeln für die Kommunikation eines HTTP-Clients mit einem HTTP-Server definiert.
Die Kommunikation verläuft über ein zuverlässiges Transport-Protokoll, meistens über TCP.
Der HTTP-Client sendet eine Anfrage (Request) an den HTTP-Server, der auf die
Anfrage antwortet (Response).
Das HTTP Protokoll wird von der IETF in der RFC 7230 definiert.
Die Request Line (Client-Request)
Die erste Zeile einer Client-Anfrage an einen Server wird als Request Line
(Anfrage-Zeile) bezeichnet.
Diese Request Line folgt einem genau definerten Format:
method SP request-target SP HTTP-Version CR LF
|
|
Anfrage-Methode (z.B. GET oder POST) |
|
|
Ressource, die vom Client angefragt wird (z.B. eine bestimmte HTML-Datei) |
|
|
HTTP Version (z.B. HTTP/1.1) |
|
|
Leerzeichen (Space) |
|
|
Wagenrücklauf (CR) |
Die Status Line (Server-Response)
Der Server antwortet auf eine Client-Anfrage immer mit einer Status Line
(Status-Zeile). Diese kann von mehreren Header-Lines und dem Response-Body gefolgt werden.
Diese Status Line folgt einem genau definerten Format:
HTTP-Version SP status-code SP reason-phrase CR LF
|
|
HTTP Version (z.B. HTTP/1.1) |
|
|
Ein dreistelliger Status-Code (z.B. 200) |
|
|
Eine kurze Beschreibung des Status Codes. |
|
|
Leerzeichen (Space) |
|
|
Wagenrücklauf (CR) |
Der Header (Request / Response)
Der Header (Kopfzeilen) Bereich einer Anfrage (Request) oder Antwort (Response)
besteht aus einer oder mehreren Zeilen, den sogenannten Header-Fields, die
jeweils mit CR LF abgeschlossen werden.
Dem Header folgt immer eine Leerzeile, die nur aus CR und LF besteht.
Der Header enthält zusätzliche Informationen, die die Nachricht, deren Verarbeitung oder den Absender/Empfänger betreffen.
Bei einer Server-Antwort (Response) kommt direkt vor dem Header die Status-Zeile. Nach der vorgeschriebenen Leerzeile, die dem Header folgen muss, kann der Message-Body Bereich, die eigentliche Ressource folgen.
Die Syntax eines Header-Fields ist wie folgt definiert:
field-name : OWS
field-value SP field-value ... OWS CR LF
|
|
Bezeichner des Header-Fields |
|
|
Wert des Header-Fields |
|
|
Leerzeichen (Space) |
|
|
Wagenrücklauf (CR) |
|
|
Optional Whitespace: Optional kann ein Leerzeichen (Space) oder ein horizontaler Tab eingefügt (HTAB) werden. |
Der gesamte Header ist immer wie folgt strukturiert:
Header-Field
Header-Field
.
.
.
Header-Field
CR LF