Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 stattdessen multipart/form-data hierfü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 im Content-Disposition Header 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

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

Identifiziert die Zielressource der Anfrage, wenn kombiniert mit den Informationen im Host Header. 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 von key=value Paaren 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:

http
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:

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

Spezifikationen

Specification
HTTP Semantics>
# POST>

Browser-Kompatibilität

Siehe auch