Dieses Protokoll wird dazu verwendet, Dateien von einem entfernten Rechner (Server) auf den eigenen Rechner (Client) zu übertragen. Tippt man beispielsweise die Adresse www.it-web.info/doku.php in das Adress-Feld eines Browsers ein, dann läuft die Kommunikation folgendermaßen ab:
GET /doku.php HTTP/1.1 Host: www.it-web.info Accept text/plain Accept text/html Accept image/jpeg User-Agent: Mozilla-Firefox Content-Type:
Zur Erklärung: Das erste Schlüsselwort gibt die Request-Methode an. Es gibt 5 verschiedene Methoden, diese werden weiter unten genauer betrachtet. Danach kommt wird das Dokument angegeben, welches der Client verlangt, in unserem Falle /doku.php. Es wird auch noch mitangegeben, welche HTTP-Version verwendet wird, hier ist es die Verion 1.1. In der zweiten Zeile steht die URI des Servers. Danach werden die Datei-Formate angegeben, die der Client akzeptiert. Es gibt natürlich noch mehr Formate, die akzeptiert werden und nicht nur die hier aufgelisteten.
Der Client schickt dem Server auch noch den Namen des Programms, mit welchem die Anfrage gesendet wurde, hier ist es Mozilla-Firefox. Der Content-Type gibt den Inhalt der Anfrage an und wird in der Form Typ/Subtyp gesendet, also z.B. text/html.
HTTP/1.1 200 OK date Tu, 20 Sep 200517.40.30 GMT Server: Apache/2.0.54 Content-Type text/html Last modified: ********** Client-Date: ***** Client-Peer: *****
HTTP ist ein verbindungsloses Protokoll, die Verbindung wird geschlossen, sobald alle angeforderten Daten übertragen wurden. Das heisst, dass der Client keine Informationen über den Server speichert und der Server keine über den Client. In der Praxis sieht es jedoch häufig so aus, dass auf Cookies zurückgegriffen wird. Dies sind kleine Textdateien, die vom Server auf der Client-Seite gespeichert werden und bei jedem Verbindungsaufbau vom Server abgerufen werden können.
Beim HTTP-Protokoll stehen verschiedene Request-Methoden zur Verfügung um Dateien abzurufen, Dateien hochzuladen oder Formulare abzusenden. Es gibt folgende Request-Methoden: die GET-, POST-, HEAD-, PUT-, DELETE-, LINK-, UNLINK-, TRACE- und OPTIONS-Methode, wobei hier nur die GET- und POST-Methode näher betrachtet werden sollen.
Bei der GET-Methode werden die Nutzdaten einfach an die URL angehängt, getrennt durch ein Fragezeichen.
Der Nachteil dieser Methode besteht darin, dass alle Informationen, die übertragen werden, in der URL unverschlüsselt lesbar sind und man deshalb auf keinen Fall Passwörter oder andere sensible Daten damit übertragen sollte. Ein weiterer Nachteil ist, dass nur eine bestimmte Anzahl von Zeichen übertragen werden können, deshalb eignet sich GET nicht dazu, sehr viele Informationen zu übertragen.
Es können auch nur solche Zeichen übertragen werden, die in einer URL vorkommen dürfen.
Die POST-Methode dient hauptsächlich dazu, Informationen wie Formulardaten vom Client zum Server übertragen. Die Nutzdaten werden dabei in einem Datensatz gebracht. Der Unterschied zur GET-Methode besteht darin, dass die Informationen nicht über die URL übertragen werden, sondern über den Header. Außerdem gibt es bei der POST-Methode kein Limit der zu übertragenden Zeichen.
Wenn man versucht, POST-Daten ein zweites mal zu übertragen, z.B. durch Aktualisieren der Seite, dann wird von den Browsern im Gegensatz zu GET eine Warnung ausgegeben, da sonst für den benutzer nicht erkannbar ist, dass überhaupt Daten übertragen werden (bei GET sieht man diese in der URL).
Beim Firefox sieht die Warnung folgendermaßen aus: