POST

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Die POST HTTP-Methode sendet Daten an den Server. Der Typ des Anfragekörpers wird durch den Content-Type Header angezeigt.

Der Unterschied zwischen PUT und POST besteht darin, dass PUT idempotent ist: Ein einmaliger Aufruf unterscheidet sich nicht von mehrmaligen aufeinanderfolgenden Aufrufen (es gibt keine Nebeneffekte). Aufeinanderfolgende identische POST-Anfragen können zusätzliche Effekte haben, wie z. B. das mehrmalige Erstellen derselben Bestellung.

HTML-Formulare senden Daten typischerweise mit POST und dies führt normalerweise zu einer Änderung auf dem Server. Für HTML-Formulare wird das Format/die Kodierung des Inhalts des Körpers 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 enkodiert, die durch ein Und-Zeichen (&) getrennt sind, mit einem Gleichheitszeichen (=) zwischen Schlüssel und Wert (z.B. first-name=Frida&last-name=Kahlo). Nicht alphanumerische Zeichen in sowohl Schlüsseln als auch Werten sind percent-kodiert: dies ist der Grund, warum dieser Typ nicht geeignet ist für die Verwendung mit binären Daten, und Sie stattdessen multipart/form-data für diesen Zweck verwenden sollten.
  • multipart/form-data: Jeder Wert wird als ein Datenblock ("body part") gesendet, mit einem durch den User-Agent definierten Trennzeichen (zum Beispiel boundary="delimiter12345") das jeden Teil trennt. Die Schlüssel werden im Content-Disposition Header jedes Teils oder Blocks von Daten beschrieben.
  • text/plain

Wenn die POST-Anfrage nach einem fetch() Aufruf gesendet wird, oder aus einem anderen Grund als einem HTML-Formular, kann der Körper beliebiger Typ sein. Wie im HTTP 1.1 Standard beschrieben, ist POST so konzipiert, dass es eine einheitliche Methode bietet, um die folgenden Funktionen abzudecken:

  • Annotation vorhandener Ressourcen
  • Posten einer Nachricht auf einem Schwarzen Brett, in einer Newsgroup, Mailingliste oder ähnlichen Gruppen von Artikeln
  • Hinzufügen eines neuen Benutzers über ein Anmeldeformular
  • Bereitstellung eines Datenblocks, wie das Ergebnis des Sendens eines Formulars, zu einem Datenverarbeitungsprozess
  • Erweiterung einer Datenbank durch einen Anhangsvorgang
Anfrage hat einen Körper Ja
Erfolgreiche Antwort hat einen Körper Ja
Sicher Nein
Idempotent Nein
Cacheable Nur wenn Aktualitätsinformationen enthalten sind
Erlaubt in HTML-Formularen Ja

Syntax

http
POST <request-target>["?"<query>] HTTP/1.1
<request-target>

Identifiziert die Zielressource der Anfrage, wenn sie mit den im Host Header bereitgestellten Informationen kombiniert wird. Dies ist ein absoluter Pfad (z.B. /path/to/file.html) bei Anfragen an einen Ursprungsserver und eine absolute URL bei Anfragen an Proxies (z.B. http://www.example.com/path/to/file.html).

<query> Optional

Eine optionale Abfragekomponente, die durch ein Fragezeichen ? eingeleitet wird. Oft wird sie verwendet, um identifizierende Informationen in der Form von key=value Paaren zu übermitteln.

Beispiele

URL-encoded Formulareinreichung

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:

http
POST /test HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

field1=value1&field2=value2

Multipart Formulareinreichung

Die multipart/form-data Kodierung wird verwendet, wenn ein Formular Dateien oder umfangreiche Daten enthält. Diese Anfragekörper trennt jeden Teil des Formulars mit einer Trennzeichenzeichenfolge. Ein Beispiel für eine Anfrage in diesem Format:

http
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 spezifiziert wird, falls zutreffend.

Spezifikationen

Specification
HTTP Semantics
# POST

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
POST

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch