Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
POST request method
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
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
| Spezifikation |
|---|
| HTTP Semantics> # POST> |
Browser-Kompatibilität
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Siehe auch
- HTTP-Anfragemethoden
- HTTP-Antwortstatuscodes
- HTTP-Header
Content-TypeHeaderContent-DispositionHeaderGETMethode