Das HTTP-Protokoll: Struktur
-
HTTP-URL
"http://" host [ ":" port ] [ "/" path ] [ "?" query ]
-
Request-URI
"/" [ path ] [ "?" query ]
-
HTTP-Versionen
-
HTTP/0.9
-
Simple-Request:
"GET " Request-URI
-
Simple-Response:
[content]
-
HTTP/1.0
-
Full-Request:
Methode " " Request-URI " HTTP/1.0"
*(Header)
[content ]
-
Full-Response:
"HTTP/1.0 " Status-Code " " Status-Text
*(Header)
[content]
Wer die Verbindung schließt, ist nicht festgelegt. Um Fehler-Meldungen
der Browser zu vermeiden, sollte der Server die Verbindung nur beenden,
wenn die Länge der Antwort nicht im Header angegeben werden konnte.
-
Methoden
-
GET
Die nachgefragte Datei oder die von ihr produzierten Daten sollen zurückgeschickt
werden.
Wenn eine If-Modified-Since-Zeit gesendet wurde, sollen die
Daten nur geschickt werden, wenn sie seitdem geändert wurde ("conditional
GET").
-
HEAD
Es soll nur der Header geschickt werden, nicht die Daten.
-
POST
Entsprechend GET, aber es wird noch Inhalt mitgeschickt.
-
weiter Methoden: PUT, DELETE, LINK, UNLINK
-
Status-Codes
-
1xx: Informational
-
2xx: Success
-
200 OK
-
201 Created
-
202 Accepted
-
204 No Content
-
3xx: Redirection
-
300 Multiple Choices
Default für 3xx-Codes.
-
301 Moved Permanently
Die neue URL wird im Location-Feld angegeben.
-
302 Moved Temporarily
Die neue URL wird im Location-Feld angegeben.
-
304 Not Modified
Antwort auf "conditional GET", wenn die Datei unverändert ist.
-
4xx: Client Error
-
400 Bad Request
-
401 Unauthorized
-
403 Forbidden
-
404 Not Found
-
5xx: Server Error
-
500 Internal Server Error
-
501 Not Implemented
-
502 Bad Gateway
-
503 Service Unavailable
Im Gegensatz zu 501 wird erwartet, daß der Dienst bald wieder
verfügbar ist.
-
Header
Es wird jeweils ein Feld pro Zeile übertragen,
in der Form Feldname ": " Wert [ *( ", " Wert ) ]
-
Allgemeine Felder
-
Date
Zeit der Sendung im Format nach RFC 822 bzw. RFC 1123, z.B. Sun,
06 Nov 1994 08:49:37 GMT. Ältere Formate wie von RFC 850 und
ANSI C's asctime() sollten nicht geschickt, aber noch verstanden werden.
-
Pragma
Implementations-abhängige Anweisungen.
-
Request-Felder
-
Authorization
-
From
E-Mail-Adresse des Anfragers.
-
If-Modified-Since
Zeit für "conditional GET"
-
Referer
URI der Quelle des Hyperlinks, mit dem dieser Request ausgelöst
wurde.
-
User-Agent
Informationen über die Browser-Software
-
Response-Felder
-
Location
Verweis auf neue URL, muß immer absolut sein.
-
Server
Informationen über die Server-Software
-
WWW-Authenticate
-
Allow
Gibt an, welche Methoden auf die URI angewendet werden dürfen
-
Felder über den Inhalt
-
Content-Encoding
z.B.: "Content-Encoding: x-gzip"
-
Content-Length
Länge des content in Byte. Wenn der Server diesen Wert
nicht angibt, muß er das Ende durch Schließen der Verbindung
anzeigen.
-
Content-Type
Art des content entsprechend MIME.
z.B.: "Content-Type: text/html"
-
Expires
"Haltbarkeits-Datum" der gesendeten Daten.
-
Last-Modified
-
weitere Felder
-
Accept, Accept-Charset, Accept-Encoding, Accept-Language
Beschreibt, was für eine Antwort erwartet wird.
-
Content-Language
-
MIME-Version
-
Retry-After
Wann nach einer "503 Service Unavailable"-Antwort, die Anfrage wiederholt
werden sollte (Zeit oder Anzahl von Sekunden).
-
Title, URI
Bezieht sich auf den content.
-
MIME
Häufige MIME-Typen:
-
text/plain
-
text/html
-
application/octet-stream
-
application/postscript
-
application/pdf
-
image/jpeg
-
image/gif
-
image/tiff
-
application/x-gzip
-
application/x-wav
-
application/x-tar
-
application/x-vrml
Beispiel: Einfacher HTTP-Server
Quellen: