HTTP/Methoden
HTTP-Methoden
Anfrage
Methode | Beschreibung |
---|---|
GET | Gebräuchlichste Methode
|
POST | schickt Daten (z. B. den Inhalt einer Datei) zur weiteren Verarbeitung zum Server, diese werden als Inhalt der Nachricht übertragen und können beispielsweise aus Name-Wert-Paaren bestehen, die aus einem HTML-Formular stammen |
HEAD | weist den Server an, die gleichen HTTP-Header wie bei GET, nicht jedoch den Nachrichtenrumpf mit dem eigentlichen Dokumentinhalt zu senden
|
PUT | dient dazu, eine Ressource (zum Beispiel eine Datei) unter Angabe des Ziel-URIs auf einen Webserver hochzuladen
|
PATCH | Ändert ein bestehendes Dokument ohne dieses wie bei PUT vollständig zu ersetzen
|
DELETE | löscht die angegebene Ressource auf dem Server |
TRACE | liefert die Anfrage so zurück, wie der Server sie empfangen hat
|
OPTIONS | liefert eine Liste der vom Server unterstützten Methoden und Merkmale |
CONNECT | wird von Proxyservern implementiert, die in der Lage sind, SSL-Tunnel zur Verfügung zu stellen |
RESTful | Web Services verwenden die unterschiedlichen Anfragemethoden zur Realisierung von Webservices
|
- WebDAV
WebDAV fügt folgende Methoden hinzu
Methode | Beschreibung |
---|---|
PROPFIND | |
PROPPATCH | |
MKCOL | |
COPY | |
MOVE | |
LOCK | |
UNLOCK |
Argumentübertragung
Häufig will ein Nutzer Informationen an eine Website senden
- Dazu stellt HTTP prinzipiell zwei Möglichkeiten zur Verfügung:
- HTTP-GET
Die Daten sind Teil der URL und bleiben deshalb beim Speichern oder der Weitergabe des Links erhalten
- Sie müssen URL-kodiert werden, das heißt reservierte Zeichen müssen mit „%<Hex-Wert>“ und Leerzeichen mit „+“ dargestellt werden
- HTTP-POST
- Übertragung der Daten mit einer speziell dazu vorgesehenen Anfrageart im HTTP-Nachrichtenrumpf, so dass sie in der URL nicht sichtbar sind
HTTP GET
Hier werden die Parameter-Wertepaare durch das Zeichen ? in der URL eingeleitet Oft wird diese Vorgehensweise gewählt, um eine Liste von Parametern zu übertragen, die die Gegenstelle bei der Bearbeitung einer Anfrage berücksichtigen soll
- Häufig besteht diese Liste aus Wertepaaren, welche durch das &-Zeichen voneinander getrennt sind
- Die jeweiligen Wertepaare sind in der Form Parametername=Parameterwert aufgebaut
- Seltener wird das Zeichen ; zur Trennung von Einträgen der Liste benutzt
- Beispiel
- Auf der Startseite von Wikipedia wird in das Eingabefeld der Suche „Katzen“ eingegeben und auf die Schaltfläche „Artikel“ geklickt
- Der Browser sendet die folgende oder eine ähnliche Anfrage an den Server:
GET /wiki/Spezial:Search?search=Katzen&go=Artikel HTTP/1.1
Host: de.wikipedia.org
…
Dem Wikipedia-Server werden zwei Wertepaare übergeben:
Argument | Wert |
---|---|
search | Katzen |
go | Artikel |
Diese Wertepaare werden in der Form
Parameter1=Wert1&Parameter2=Wert2
mit vorangestelltem ? an die geforderte Seite angehängt
Dadurch erfährt der Server, dass der Nutzer den Artikel Katzen betrachten will
- Der Server verarbeitet die Anfrage, sendet aber keine Datei, sondern leitet den Browser mit einem Location-Header zur richtigen Seite weiter, etwa mit:
HTTP/1.0 302 Found
Date: Fri, 13 Jan 2006 15:12:44 GMT
Location: http://de.wikipedia.org/wiki/Katzen
…
Der Browser befolgt diese Anweisung und sendet aufgrund der neuen Informationen eine neue Anfrage, etwa:
GET /wiki/Katzen HTTP/1.1
Host: de.wikipedia.org
…
Und der Server antwortet und gibt den Artikel Katzen aus, etwa:
HTTP/1.1 200 OK
Date: Fri, 13 Jan 2006 15:12:48 GMT
Last-Modified: Tue, 10 Jan 2006 11:18:20 GMT
Content-Language: de
Content-Type: text/html; charset=utf-8
Die Katzen (Felidae) sind eine Familie aus der Ordnung der Raubtiere (Carnivora)
innerhalb der Überfamilie der Katzenartigen (Feloidea)
…
Der Datenteil ist meist länger, hier soll nur das Protokoll betrachtet werden
Nachteil dieser Methode ist, dass die angegebenen Parameter mit der URL meist in der Historie des Browsers gespeichert werden und so persönliche Daten unbeabsichtigt im Browser gespeichert werden können
- Stattdessen sollte man in diesem Fall die Methode POST benutzen
HTTP POST
Da sich die Daten nicht in der URL befinden, können per POST große Datenmengen, zum Beispiel Bilder, übertragen werden
Im folgenden Beispiel wird wieder der Artikel Katzen angefordert, doch diesmal verwendet der Browser aufgrund eines modifizierten HTML-Codes (method="POST") eine POST-Anfrage
- Die Variablen stehen dabei nicht in der URL, sondern gesondert im Rumpfteil, etwa:
POST /wiki/Spezial:Search HTTP/1.1
Host: de.wikipedia.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
search=Katzen&go=Artikel
Auch das versteht der Server und antwortet wieder mit beispielsweise folgendem Text:
HTTP/1.1 302 Found
Date: Fri, 13 Jan 2006 15:32:43 GMT
Location: http://de.wikipedia.org/wiki/Katzen
…