HTTP/Methoden: Unterschied zwischen den Versionen
Zeile 7: | Zeile 7: | ||
! Methode !! Beschreibung | ! Methode !! Beschreibung | ||
|- | |- | ||
| GET || Gebräuchlichste Methode | | [[#GET|GET]] || Gebräuchlichste Methode | ||
* Mit ihr wird eine Ressource (zum Beispiel eine Datei) unter Angabe eines [[Uniform Resource Identifier|URI]] vom Server angefordert | * Mit ihr wird eine Ressource (zum Beispiel eine Datei) unter Angabe eines [[Uniform Resource Identifier|URI]] vom Server angefordert | ||
* Als Argumente in dem URI können auch Inhalte zum Server übertragen werden, allerdings soll laut Standard eine GET-Anfrage nur Daten abrufen und sonst keine Auswirkungen haben (wie Datenänderungen auf dem Server oder ausloggen). ''(siehe [[#HTTP GET|unten]])'' | * Als Argumente in dem URI können auch Inhalte zum Server übertragen werden, allerdings soll laut Standard eine GET-Anfrage nur Daten abrufen und sonst keine Auswirkungen haben (wie Datenänderungen auf dem Server oder ausloggen). ''(siehe [[#HTTP GET|unten]])'' | ||
|- | |- | ||
| 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 | | [[#POST|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 | ||
* Es können so neue Ressourcen auf dem Server entstehen oder bestehende modifiziert werden | * Es können so neue Ressourcen auf dem Server entstehen oder bestehende modifiziert werden | ||
* POST-Daten werden im Allgemeinen nicht von [[Cache]]s zwischengespeichert | * POST-Daten werden im Allgemeinen nicht von [[Cache]]s zwischengespeichert | ||
* Zusätzlich können bei dieser Art der Übermittlung auch Daten wie in der GET-Methode an den URI gehängt werden. ''(siehe [[#HTTP POST|unten]])'' | * Zusätzlich können bei dieser Art der Übermittlung auch Daten wie in der GET-Methode an den URI gehängt werden. ''(siehe [[#HTTP POST|unten]])'' | ||
|- | |- | ||
| HEAD || weist den Server an, die gleichen HTTP-Header wie bei GET, nicht jedoch den Nachrichtenrumpf mit dem eigentlichen Dokumentinhalt zu senden | | [[#HEAD|HEAD]] || weist den Server an, die gleichen HTTP-Header wie bei GET, nicht jedoch den Nachrichtenrumpf mit dem eigentlichen Dokumentinhalt zu senden | ||
* So kann zum Beispiel schnell die Gültigkeit einer Datei im [[Browser-Cache]] geprüft werden, und Dateigrößen können im Voraus abgerufen und durch die Content-Length-Zeile erlesen werden | * So kann zum Beispiel schnell die Gültigkeit einer Datei im [[Browser-Cache]] geprüft werden, und Dateigrößen können im Voraus abgerufen und durch die Content-Length-Zeile erlesen werden | ||
|- | |- | ||
| PUT || dient dazu, eine Ressource (zum Beispiel eine Datei) unter Angabe des Ziel-URIs auf einen Webserver hochzuladen | | [[#PUT|PUT]] || dient dazu, eine Ressource (zum Beispiel eine Datei) unter Angabe des Ziel-URIs auf einen Webserver hochzuladen | ||
* Besteht unter der angegebenen Ziel-URI bereits eine Ressource, wird diese ersetzt, ansonsten neu erstellt | * Besteht unter der angegebenen Ziel-URI bereits eine Ressource, wird diese ersetzt, ansonsten neu erstellt | ||
|- | |- | ||
| PATCH || Ändert ein bestehendes Dokument ohne dieses wie bei PUT vollständig zu ersetzen | | [[#PATCH|PATCH]] || Ändert ein bestehendes Dokument ohne dieses wie bei PUT vollständig zu ersetzen | ||
* Wurde durch RFC 5789 spezifiziert | * Wurde durch RFC 5789 spezifiziert | ||
|- | |- | ||
| DELETE || löscht die angegebene Ressource auf dem Server | | [[#DELETE|DELETE]] || löscht die angegebene Ressource auf dem Server | ||
|- | |- | ||
| TRACE || liefert die Anfrage so zurück, wie der Server sie empfangen hat | | [[#TRACE|TRACE]] || liefert die Anfrage so zurück, wie der Server sie empfangen hat | ||
* So kann überprüft werden, ob und wie die Anfrage auf dem Weg zum Server verändert worden ist – sinnvoll für das [[Debugger|Debugging]] von Verbindungen | * So kann überprüft werden, ob und wie die Anfrage auf dem Weg zum Server verändert worden ist – sinnvoll für das [[Debugger|Debugging]] von Verbindungen | ||
|- | |- | ||
| OPTIONS || liefert eine Liste der vom Server unterstützten Methoden und Merkmale | | [[#OPTIONS|OPTIONS]] || liefert eine Liste der vom Server unterstützten Methoden und Merkmale | ||
|- | |- | ||
| CONNECT || wird von Proxyservern implementiert, die in der Lage sind, [[Secure Sockets Layer|SSL]]-Tunnel zur Verfügung zu stellen | | [[#CONNECT|CONNECT]] || wird von Proxyservern implementiert, die in der Lage sind, [[Secure Sockets Layer|SSL]]-Tunnel zur Verfügung zu stellen | ||
|- | |- | ||
| [[Representational State Transfer|RESTful]] || Web Services verwenden die unterschiedlichen Anfragemethoden zur Realisierung von [[Webservice]]s | | [[Representational State Transfer|RESTful]] || Web Services verwenden die unterschiedlichen Anfragemethoden zur Realisierung von [[Webservice]]s |
Version vom 29. März 2024, 13:11 Uhr
HTTP/Methoden - Kurzbeschreibung
Beschreibung
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
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
…