HTTP ist das Übertragungsprotokoll des World Wide Web und sorgt "hinter den Kulissen" für die reibungslose und effiziente Übertragung von Web-Seiten und multimedialen Inhalten zwischen Webserver und Webbrowser.
Technische Grundzüge
In der ersten, offiziellen Version "HTTP 1.0" erfolgte die Übertragung verbindungs- und zustandslos. Dies bedeutete, dass tatsächlich für jedes zu übertragende Element (Web-Seiten, eventuell eingebettete Grafik- oder Multimediaelemente) eine neue Verbindung zwischen Server und Client aufgebaut und nach der Übertragung des Elements sofort wieder geschlossen wurde. In der Praxis zeigte sich jedoch schnell, dass größere Webserver damit außerordentlich stark belastet wurden.
Mit HTTP 1.1 wurde dieses Problem behoben, indem Client und Server eine gemeinsame Sitzung aufbauen und darin alle entsprechenden Elemente übertragen. Dieser Datenkanal bleibt so lange geöffnet, bis eine bestimmte abgelaufene Zeit ohne Datenübertragung einen Timeout auslöst und die Verbindung beendet.
Daneben besitzt HTTP 1.1 zusätzlich die Möglichkeit, dass auf einer IP-Adresse einer physikalischen Maschine grundsätzlich mehrere Webserver betrieben werden können. Die Unterscheidung, welcher Webserver von einem Webbrowser nun gewünscht ist, wird durch ein zusätzliches Feld in der Anfrage des Webbrowsers erledigt, das genau die Adresse des gewünschten Webservers enthält (der so genannte "Host Header").
Grundlegende HTTP-Befehle
HTTP besitzt einen sehr einfachen und übersichtlichen Befehlssatz, um der Idee eines schlanken Übertragungsprotokolls möglichst nahe zu kommen und auch bei hohem Datenaufkommen eine schnelle Bearbeitung von Übertragungswünschen sicherstellen zu können. In der Tat gehört HTTP zu den einfachsten Übertragungsprotokollen im Internet überhaupt.
- DELETE
Client-seitiger Befehl zum Löschen von Ressourcen auf einem Webserver. - GET
Client-seitiger Befehl zur Anforderung von Ressourcen von einem Webserver. - HEAD
Entspricht dem GET-Befehl mit der Ausnahme, dass der Server bei seiner Antwort die angegebene Ressource nicht mit übertragen muss. Dieser Befehl wird oft benutzt, um z.B. vorhandene Hyperlinks nur zu testen. - OPTIONS
Client-seitiger Befehl zur Übergabe von Informationen über die Kommunikation zwischen Client und Server. - POST
Der POST-Befehl wird benutzt, um Formulardaten direkt an ein serverseitiges Programm zu schicken (im Gegensatz zum GET-Befehl, dass Formulardaten serverseitig zunächst in eine Variable speichert, die von einem CGI-Programm ausgelesen werden muss). - PUT
Dieser Befehl positioniert eine beigelegte Ressource an den angegebenen Ort innerhalb des Webservers. - TRACE
Dieser Befehl fungiert als Echo-Befehl, d.h. der Server sendet dem Client bei diesem Befehl genau das zurück, was er von ihm erhalten hat.
HTTP-Erweiterungen
HTTP ist weitgehend ein "Push"-Protokoll", dient also in erster Linie zur Übertragung von Inhalten von einem Webserver zu einem Webbrowser. Eine Administration eines Webservers ist mit dem normalen Befehlssatz beispielsweise nicht möglich, die musste bisher mit anderen Übertragungsprotokollen realisiert werden, beispielsweise mit FTP.
Diese Lücke wird mit WebDAV ("Web-based Distributed Authoring and Versioning") ausgefüllt. WebDAV stellt hierzu einen zusätzlichen Befehlssatz und Übertragungsverfahren bereit, die es einem entsprechenden WebDAV-fähigen Programm ermöglichen, Daten auf einen Webserver zu übertragen beziehungsweise dort zu verwalten (falls dies vom Webserver unterstützt wird).
Der Vorteil von WebDAV liegt hierbei auf der Hand: Es ist keine zusätzliche Serversoftware auf dem Webserver notwendig und das HTTP-Protokoll ist als schlankes Übertragungsprotokoll eine gute Wahl, um auch Daten auf einen Webserver hochzuladen.
HTTP-Statusmeldungen
Klasse 1xx: INFORMATIONAL
Diese Klasse ist für provisorische Antworten reserviert.
- 100 Continue
Der Server hat die Anfrage korrekt erhalten und wartet auf weitere Anweisungen des Clients, um die Anfrage ausführen zu können. - 101 Switching Protocols
Der Server hat die Anfrage korrekt erhalten und wird gemäß der Anweisung des Clients zum Ausführen der Anfrage das Übertragungsprotokoll nach Senden dieser Statusmeldung ändern.
Klasse 2xx: SUCCESSFULL
Die 2xx-Klasse zeigt an, dass die Anfrage des Clients vom
Server empfangen, verstanden und akzeptiert wurde.
- 200 OK
Die Anfrage erreichte korrekt den Server und wurde korrekt ausgeführt - 201 Created
Die Anfrage erreichte korrekt den Server und die angeforderte Ressource wurde neu erzeugt. - 202 Accepted
Die Anfrage erreichte korrekt den Server, konnte aber noch nicht bearbeitet werden. - 203 Non-Authoritative Information
Die angefragte Ressource ist zwar nicht auf dem ursprünglich angewählten Server vorhanden, dieser hat jedoch die Anfrage automatisch an eine andere Ressource weitergeleitet, die die angeforderte Information enthält. - 204 No Content
Die Anfrage erreichte korrekt den Server, jedoch ist die angeforderte Ressource unverändert (wichtig für Anfragen über Proxy-Server). - 205 Reset Content
Die Anfrage erreichte korrekt den Server und wurde verarbeitet. Mit dieser Antwort wird der anfragende Client aufgefordert, die Dokumentansicht zu löschen, die die Anfrage nach dieser Ressource auslöste (z.B. eine Eingabe in einem Formularfeld). - 206 Partial Content
Die GET-Anfrage enthielt im HTTP-Header die Zeile "Range", der den Server auffordert, nur einen bestimmten Bereich der angeforderten Ressource zu übermitteln. Diese Anfrage erreichte korrekt den Server und wurde verarbeitet.
Klasse 3xx: REDIRECTION
Die 3xx-Klasse zeigt an, dass die Anfrage zwar korrekt
empfangen wurde, der Benutzer jedoch Änderungen an der
Anfrage zur Ressource machen sollte.
- 300 Multiple Choices
Die angeforderte Ressource ist mehrfach vorhanden. Der Nutzer sollte seine Anfrage ggf. konkretisieren. - 301 Moved Permanently
Die angeforderte Ressource ist an eine andere Stelle im Internet verschoben worden und dort erreichbar. - 302 Moved Temporarily
Die angeforderte Ressource ist vorübergehend an einer anderen Stelle im Internet vorhanden. - 303 See Other
Die angeforderte Ressource ist an einer anderen Stelle vorhanden und sollte von dieser Stelle aus abgerufen werden. - 304 Not Modified
Die angeforderte Ressource ist vorhanden, wird aber nicht übertragen, weil sie seit dem letzten Ladevorgang nicht verändert wurde. - 305 Use Proxy
Die angeforderte Ressource kann nur über einen Proxy versendet werden, der explizit in der Antwort im Feld "Location" angegeben ist.
Klasse 4xx: CLIENT ERROR
Die 4xx-Klasse steht für alle Meldungen über Fehler, die
wahrscheinlich durch den anfordernden Client ausgelöst
werden.
- 400 Bad Request
Der Server konnte die Anfrage des Clients nicht verstehen. Der Client sollte die Anfrage ohne Veränderung nicht wiederholen. - 401
Unauthorized
Der Zugriff auf die angeforderte Ressource erfordert eine Benutzerauthentifizierung, die in der Anfrage nicht vorhanden ist. - 402 Payment Required
Dieser Code ist reserviert. - 403 Forbidden
Der Zugriff auf die angeforderte Ressource wird verweigert, da die Datei für den Zugriff gesperrt wurde. Eine Authentifizierung ist nicht vorgesehen und der Server wünscht keine Wiederholung der Anfrage. - 404 Not Found
Die angeforderte Ressource ist unter der angegebenen Adresse nicht vorhanden. - 405 Method Not Allowed
Die angeforderte Ressource darf nicht nach der Methode übertragen werden, die der Client im Feld "Request" des HTTP-Header angefordert hat. Mit dieser Antwort wird gleichzeitig eine Liste der gültigen Methoden übermittelt, die für eine Übertragung dieser Ressource erlaubt sind. - 406 Not Acceptable
Die angeforderte Ressource kann nicht übermittelt werden, da die "Charakteristika" der angeforderten Ressource nicht mit der "Charakteristika" übereinstimmt, die im HTTP-Header des Anfrage geschickt wurde. - 407 Proxy Authentication
Required
Dieser Statuscode entspricht dem Statuscode 401 mit dem Unterschied, dass sich der Client zuerst gegenüber dem Proxy identifizieren muss. - 408 Request
Timeout
Der Client übermittelte nach Aufbau der Verbindung keine Anfrage, so dass der Server nach einer gewissen Zeit, die vom Serveradministrator festgelegt wurde, diesen Statuscode zurücksendet. Der Client kann seine Anfrage jedoch jederzeit wieder an den Server senden. - 409 Conflict
Die Anfrage des Clients konnte nicht bearbeitet werden, da ein Konflikt bezüglich des aktuellen Status der Ressource vorliegt. Dieser Statuscode wird vom Server nur gesendet, wenn der Nutzer dieses Problem selbst lösen kann, z.B. durch eine veränderte Anfrage. - 410 Gone
Die angeforderte Ressource ist nicht mehr länger auf dem Server vorhanden und es ist keine alternative Adresse für die gleiche Ressource bekannt. Dieser Statuscode wird z.B. von Serveradministratoren gewählt, wenn es sich z.B. um eine zeitlich befristete Präsentation handelte. - 411 Length
Required
Der Server hat die Anfrage abgelehnt, da der HTTP-Header der Anfrage keine Variable "Content-Length" enthielt, um einen bestimmten Bereich der Ressource anzufordern. - 412 Precondition Failed
Die Parameter, die in der Anfrage des Clients übertragen wurden, wurden bei der Prüfung im Server als unwahr ("false") deklariert. - 413 Request Entity Too Large
Der Server verweigert die Bearbeitung der Anfrage, da der Inhalt der Anfrage größer ist, als der Server verarbeiten kann oder will. Der Server kann die Verbindung zum Client beenden, um den Client daran zu hindern, weitere Anfragen zu schicken. - 414 Request-URI Too Long
Der Server verweigert die Bearbeitung der Anfrage, da der URI der Anfrage länger ist, als der Server interpretieren kann. Diese seltene Statusmeldung wird verwendet, wenn z.B. ein URL eine überlange Abfrage-Sequenz enthält. - 415 Unsupported Media Type
Der Server verweigert die Bearbeitung der Anfrage, da die angeforderte Ressource nicht in dem Format übertragen werden kann, die in der Anfrage gewünscht wird.
Klasse 5xx: SERVER ERROR
Die 5xx-Klasse steht für vorübergehende Nichtausführbarkeit
der Anfrage oder für Fehler, die im Server entstanden bzw.
vorhanden sind und eine Ausführung der Anfrage unmöglich
macht.
- 500 Internal Server Error
Der Server befindet sich in einem undefinierten Zustand und kann die Anfrage nicht ausführen. - 501 Not Implemented
Der Server kann die Anfrage nicht bearbeiten, da er die Art der Anfrage nicht versteht und die Behandlung der angeforderten Ressource nicht kennt. - 502 Bad Gateway
Der Server (eingesetzt als Gateway oder Proxy) kann die Anfrage nicht bearbeiten, da er bei der Weitergabe der Anfrage an einen höher stehenden Server eine Fehlermeldung erhalten hat. - 503 Service Unavailable
Der Server kann die Anfrage nicht bearbeiten, da er vorübergehend überlastet ist oder gewartet wird. - 504 Gateway Timeout
Wenn der Server als Gateway oder Proxy arbeitet, gibt er diese Statusmeldung an den Client zurück, wenn er innerhalb einer, vom Serveradministrator definierte, bestimmte Zeit keine Rückantwort von einem Server erhält, der vom Client über ihn angesprochen wurde. - 505 HTTP Version Not Supported
Der Server kann oder will die HTTP-Version nicht unterstützen, die ein Client für die Anfrage benutzt hat.
Weiterführende Links
http://www.webdav.org/
Homepage der WebDAV-Gruppe