HTTP/Methoden

Aus Foxwiki

HTTP/Methoden - Beschreibung

Beschreibung

Anfrage

Methode  Beschreibung
GET Gebräuchlichste Methode
  • Mit ihr wird eine Ressource (zum Beispiel eine Datei) unter Angabe eines 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 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
  • Es können so neue Ressourcen auf dem Server entstehen oder bestehende modifiziert werden
  • POST-Daten werden im Allgemeinen nicht von Caches zwischengespeichert
  • Zusätzlich können bei dieser Art der Übermittlung auch Daten wie in der GET-Methode an den URI gehängt werden. (siehe unten)
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
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
PATCH Ändert ein bestehendes Dokument ohne dieses wie bei PUT vollständig zu ersetzen
  • Wurde durch RFC 5789 spezifiziert
DELETE löscht die angegebene Ressource auf dem Server
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 Debugging von Verbindungen
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
  • Insbesondere werden dafür die HTTP-Anfragemethoden GET, POST, PUT/PATCH und DELETE verwendet

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

WebDAV

WebDAV fügt folgende Methoden hinzu

Methode  Beschreibung
PROPFIND
PROPPATCH
MKCOL
COPY
MOVE
LOCK
UNLOCK


Anhang

Siehe auch

Links

Weblinks