HTTP/Anfragemethoden

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Im HTTP gibt es verschiedene Anfragemethoden (englisch: request methods), die es dem Browser ermöglichen, Informationen, Formulare oder Dateien an den Server zu senden.

Wahl der Anfragemethode

Die Wahl der Übertragungsmethode hängt, will man es richtig machen, nicht etwa von der Präferenz des Programmierers ab, sondern folgt eigentlich ganz einfachen Regeln:

  1. Soll durch den Request eine bestimmte Ressource (Bild, Script, HTML-Dokument) vom Server angefordert werden, so ist die GET-Methode die richtige Wahl.
  2. Soll dem Server ein Datenpaket zur Verarbeitung übegeben werden, ist die POST-Methode die richtige Wahl. Als URI wird in diesem Fall der Serverprozess angegeben, der für die Verarbeitung zuständig ist (beispielsweise index.php). Senden Sie Formulardaten immer mit POST.
  3. Werden Daten für Logins, insbesondere Passwörter übermittelt, dann ist nur POST die richtige Wahl.
  4. Soll eine Ressource unter einer bestimmten URI auf dem Server gespeichert werden, so ist die PUT- oder die PATCH Methode die richtige Wahl. Soll die Ressource gelöscht werden, verwendet man DELETE. Eine ganze Familie von Webservices - die sogenannten REST Services - verwenden GET, PUT und DELETE, um eine Datenzugriffsschicht zu implementieren. Damit PHP andere Verben als GET oder POST akzeptiert, muss man sie aber in der php.ini zunächst freischalten.

Hauptartikel: PHP/Tutorials/Formulare#Wann ist GET oder POST zu verwenden?

Anfragemethoden

GET

Mit der GET-Methode können Sie eine Ressource (zum Beispiel eine Datei) vom Server anfordern. Dabei wird ein Parameter (z. B. übertragene Formulardaten), getrennt durch ein Fragezeichen, zum URI hinzugefügt.

Die Länge des URIs ist zwar nicht durch die Spezifikation begrenzt; es gibt aber je nach eingesetztem Server implementierungsspezifische Grenzen (beim Apache Webserver beispielsweise 16kB), aus Gründen der Abwärtskompatibilität sollte man 255 Bytes nicht überschreiten.

Beispiel
GET /index.php?suche=anfragemethoden+formular HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: image/gif, image/jpeg, */* Connection: close

Dieser muss URL-encodiert sein, sodass z. B. Leerzeichen durch %20 und im Query-String als + ersetzt werden müssen.

encodierter Query-String für "Weißes Rössl"
GET /index.php?suche=Wei%C3%9Fes+R%C3%B6ssl HTTP/1.1
Beachten Sie: Der Query-String ist nach dem Absenden des Formulars im Web-Browser des Anwenders in der Adresszeile sichtbar.


POST

Mit der POST-Methode können Sie große Datenmengen (wie Bilder oder HTML-Formular-Daten) zur weiteren Verarbeitung zum Server senden.

Name-Wert-Paare wie Formularnamen und die dazugehörigen Werte werden in einem URL-encodierten durch Kaufmanns-Und getrennten Datensatz zusammengefasst:

Beispiel
Name=Wei%C3%9Fes+R%C3%B6ssl&Ort=St.+Wolfgang&PLZ=5360

Die Daten werden beim Absenden des Formulars mit einer POST-Anfrage an den Server geschickt. Dabei ist der Datensatz aber nicht Teil der URL, sondern wird, durch eine Leerzeile getrennt, an den Header angehängt.

Beispiel
POST /send.php HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Accept: image/gif, image/jpeg, */* Content-type: application/x-www-form-urlencoded Content-length: 51 Connection: close Name=Wei%C3%9Fes+R%C3%B6ssl&Ort=St.+Wolfgang&PLZ=5360

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.

HEAD

Die HEAD-Methode 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, indem die Größe verglichen wird.

PUT

Die PUT-Methode dient dazu eine Ressource (zum Beispiel eine Datei) unter Angabe des Ziel-URIs auf einen Webserver hochzuladen. Dabei muss sie nicht wie bei POST durch ein Skript verarbeitet werden, sondern wird an der in der ersten Zeile angegebenen Stelle platziert.

Beispiel
PUT /kommentar.html HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Accept: image/gif, image/jpeg, */* Content-type: text/html Content-length: 22 <p>Neuer Kommentar</p>

Es können so neue Ressourcen auf dem Server entstehen oder bestehende modifiziert werden.

PATCH

Die PATCH-Methode ändert ein bestehendes Dokument ohne dieses wie bei der PUT-Methode vollständig zu ersetzen. Mit PATCH können Clients Anfragen senden, um bestimmte Änderungen an einer Ressource auf dem Server vorzunehmen, ohne alle Daten erneut übertragen zu müssen.

Das Format einer PATCH-Anfrage wird durch HTTP nicht festgelegt. Es gibt eigene Spezifikationen wie RFC 6902 (JSON Patch) oder RFC 5261 (XML Patch), die für Objekte oder XML Dokumente konzipiert wurden. Es ist aber auch denkbar, dass ein Server eigene Patch-Regeln festlegt.

DELETE

Die DELETE-Methode löscht die angegebene Ressource auf dem Server.

DELETE und PUT sind häufig in der Standardkonfiguration von Webservern abgeschaltet, erlangen jedoch mit RESTful Web Services und der HTTP-Erweiterung WebDAV neue Bedeutung.

TRACE

Die TRACE-Methode 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

Die OPTIONS-Methode liefert eine Liste der vom Server unterstützen Methoden und Merkmale.

CONNECT

Die CONNECT-Methode wird von Proxyservern implementiert, die in der Lage sind, SSL-Tunnel zur Verfügung zu stellen.

Weblinks