POST ist die HTTP-Methode, mit der ein Client Daten an den Server schickt. Kontaktformulare, Bestellungen, Anmeldungen und Uploads laufen per POST, und meist entsteht dabei etwas Neues.
- POST
Die HTTP-Methode zum Übermitteln von Daten im Body einer Anfrage, die auf dem Server verarbeitet oder gespeichert werden.
Beispiel: „Das Kontaktformular schickt Name und Nachricht per POST, damit sie nicht in der Adresse stehen.“Abgrenzung zu PUT: PUT ersetzt eine Ressource unter einer bekannten Adresse. POST übergibt Daten, und der Server entscheidet, was daraus wird.
Wie POST funktioniert
Die Daten stehen im Body der Anfrage, bei Formularen als Feldliste, bei Schnittstellen meist als JSON. Legt der Server etwas an, antwortet er üblicherweise mit 201 und nennt im Header Location die Adresse des neuen Datensatzes.
POST ist nicht idempotent: Zweimal gesendet, entstehen zwei Bestellungen. Deshalb fragt der Browser nach, bevor er ein Formular beim Neuladen erneut abschickt.
POST im Vergleich mit den anderen Methoden
Die Übersicht zeigt alle neun HTTP-Methoden. Sicher heißt, dass eine Methode nichts verändert; idempotent heißt, dass mehrfaches Senden dasselbe Ergebnis hat wie einfaches.
Methode | Wofür | Sicher | Idempotent |
|---|---|---|---|
Ressource abrufen, ohne etwas zu ändern | ja | ja | |
wie GET, aber nur die Kopfzeilen | ja | ja | |
POST | Daten senden, meist etwas Neues anlegen | nein | nein |
Ressource vollständig ersetzen | nein | ja | |
Ressource teilweise ändern | nein | nein | |
Ressource löschen | nein | ja | |
erlaubte Methoden erfragen | ja | ja | |
Tunnel über einen Proxy aufbauen | nein | nein | |
Anfrage zur Fehlersuche zurückspiegeln | ja | ja |
POST-Formulare sicher bauen
Nach dem Absenden leitet der Server per Redirect auf eine Bestätigungsseite um, die per GET geladen wird. Dieses Muster heißt Post/Redirect/Get und verhindert, dass ein Neuladen das Formular erneut sendet.
Dazu kommt ein Schutz gegen Cross-Site Request Forgery: Laravel setzt in jedes Formular ein Token, ohne das der Server eine POST-Anfrage ablehnt.