POST request method
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Die POST-HTTP-Methode sendet Daten an den Server. Der Typ des Anfragetextes wird durch den Content-Type Header angegeben.
Der Unterschied zwischen PUT und POST ist, dass PUT idempotent ist: Eine einmalige Ausführung ist nicht anders als mehrfache aufeinanderfolgende Ausführungen (es gibt keine Nebeneffekte).
Mehrfache identische POST-Anfragen können zusätzliche Effekte haben, z.B. das mehrfache Erstellen derselben Bestellung.
HTML-Formulare senden typischerweise Daten mit POST, was normalerweise eine Änderung auf dem Server zur Folge hat.
Für HTML-Formulare wird das Format/die Kodierung des Inhalts durch das enctype Attribut des <form> Elements, oder das formenctype Attribut der <input> oder <button> Elemente bestimmt.
Die Kodierung kann eine der folgenden sein:
application/x-www-form-urlencoded: Die Schlüssel und Werte werden in Schlüssel-Wert-Tupel codiert, die durch ein Kaufmanns-Und (&) getrennt sind, mit einem Gleichheitszeichen (=) zwischen dem Schlüssel und dem Wert (z.B.first-name=Frida&last-name=Kahlo). Nicht-alphanumerische Zeichen in beiden, Schlüssel und Werten, sind prozentkodiert: Dies ist der Grund, warum dieser Typ nicht für die Verwendung mit Binärdaten geeignet ist, und Sie stattdessenmultipart/form-datahierfür verwenden sollten.multipart/form-data: Jeder Wert wird als ein Datenblock ("body part") gesendet, getrennt durch einen vom Benutzeragenten definierten Trenner (z.B.boundary="delimiter12345"), der jeden Teil trennt. Die Schlüssel werden imContent-DispositionHeader jedes Teils oder Datenblocks beschrieben.text/plain
Wenn die POST-Anfrage durch einen fetch() Aufruf oder aus einem anderen Grund als einem HTML-Formular gesendet wird, kann der Körper jeden Typ haben.
Wie in der HTTP/1.1-Spezifikation beschrieben, ist POST dafür vorgesehen, eine einheitliche Methode zur Verfügung zu stellen, um die folgenden Funktionen abzudecken:
- Anmerkung bestehender Ressourcen
- Senden einer Nachricht an ein Schwarzes Brett, eine Newsgroup, Mailingliste oder ähnliche Gruppe von Artikeln
- Hinzufügen eines neuen Benutzers über ein Anmeldeformular
- Bereitstellung eines Datenblocks, wie das Ergebnis des Einreichens eines Formulars, für einen Datenverarbeitungsprozess
- Erweiterung einer Datenbank durch einen Anhängevorgang
| Anfrage hat einen Körper | Ja |
|---|---|
| Erfolgreiche Antwort hat einen Körper | Ja |
| Sicher | Nein |
| Idempotent | Nein |
| Zwischenspeicherbar | Nur wenn Frischeinformationen enthalten sind |
| Erlaubt in HTML-Formularen | Ja |
Syntax
POST <request-target>["?"<query>] HTTP/1.1
<request-target>-
Identifiziert die Zielressource der Anfrage, wenn kombiniert mit den Informationen im
HostHeader. Dies ist ein absoluter Pfad (z.B./path/to/file.html) in Anfragen an einen Ursprungsserver und eine absolute URL in Anfragen an Proxys (z.B.http://www.example.com/path/to/file.html). <query>Optional-
Eine optionale Abfragekomponente, der ein Fragezeichen
?vorangestellt ist. Wird häufig verwendet, um identifizierende Informationen in Form vonkey=valuePaaren zu übertragen.
Beispiele
>URL-kodierte Formularübermittlung
Ein Formular mit application/x-www-form-urlencoded Inhaltskodierung (Standard) sendet eine Anfrage, bei der der Körper die Formulardaten in key=value Paaren enthält, wobei jedes Paar durch ein & Symbol getrennt ist, wie unten gezeigt:
POST /test HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
Multipart-Formularübermittlung
Die multipart/form-data Kodierung wird verwendet, wenn ein Formular Dateien oder eine große Menge an Daten enthält.
Dieser Anfragekörper gliedert jeden Teil des Formulars mithilfe eines Trennzeichen-Strings.
Ein Beispiel für eine Anfrage in diesem Format:
POST /test HTTP/1.1
Host: example.com
Content-Type: multipart/form-data;boundary="delimiter12345"
--delimiter12345
Content-Disposition: form-data; name="field1"
value1
--delimiter12345
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--delimiter12345--
Der Content-Disposition Header gibt an, wie die Formulardaten verarbeitet werden sollen, indem das Feld name und filename, falls zutreffend, spezifiziert wird.
Spezifikationen
| Specification |
|---|
| HTTP Semantics> # POST> |
Browser-Kompatibilität
Loading…
Siehe auch
- HTTP-Anfragemethoden
- HTTP-Antwortstatuscodes
- HTTP-Header
Content-TypeHeaderContent-DispositionHeaderGETMethode