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