web-dev-qa-db-ger.com

Was ist der Unterschied zwischen POST und GET?

Ich habe mich erst kürzlich mit PHP/AJAX/jQuery befasst und es scheint mir, dass ein wichtiger Teil dieser Technologien das von POST und GET ist.

Was ist der Unterschied zwischen POST und GET? Durch Experimentieren weiß ich, dass GET die zurückgegebenen Variablen und ihre Werte an die URL-Zeichenfolge anfügt

website.com/directory/index.php?name=YourName&bday=YourBday

aber POST nicht.

Ist dies der einzige Unterschied oder gibt es spezielle Regeln oder Konventionen für die Verwendung des einen oder anderen?

Zweitens habe ich auch POST und GET außerhalb von PHP gesehen: auch in AJAX und jQuery. Wie unterscheiden sich POST und GET zwischen diesen 3? Sind sie die gleiche Idee, die gleiche Funktionalität, nur unterschiedlich genutzt?

362
Hristo

Ein POST enthält im Gegensatz zu einem GET normalerweise relevante Informationen im Hauptteil der Anforderung. (Ein GET sollte keinen Body haben. Abgesehen von Cookies ist der einzige Ort, an dem Informationen weitergegeben werden, die URL.) Abgesehen davon, dass die URL relativ sauber bleibt, können Sie mit POST auch viel mehr Informationen senden (da die URLs eine begrenzte Länge haben, z praktisch) und ermöglicht das Senden nahezu aller Arten von Daten (Datei-Upload-Formulare können beispielsweise nicht GET verwenden - sie müssen POST plus einen speziellen Inhaltstyp/eine spezielle Codierung verwenden).

Abgesehen davon bedeutet ein POST, dass die Anforderung etwas ändert und nicht ohne Weiteres wiederholt werden sollte. Aus diesem Grund werden Sie manchmal von Ihrem Browser gefragt, ob Sie die Formulardaten erneut senden möchten, wenn Sie auf die Schaltfläche "Zurück" klicken.

GET sollte auf der anderen Seite idempotent sein, was bedeutet, dass Sie es eine Million Mal tun können und der Server jedes Mal dasselbe tun wird (und im Grunde dasselbe Ergebnis zeigt).

89
cHao

Obwohl die Unterschiede nicht beschrieben werden, sollten Sie im Folgenden ein paar Dinge bedenken, wenn Sie die richtige Methode auswählen.

  • GET-Anforderungen können vom Browser zwischengespeichert werden, was bei der Verwendung von Ajax ein Problem (oder einen Vorteil) darstellen kann.
  • GET-Anforderungen stellen Parameter für Benutzer bereit (POST ebenfalls, sie sind jedoch weniger sichtbar).
  • Der POST kann viel mehr Informationen an den Server übergeben und fast beliebig lang sein.
29
Alex

POST und GET sind zwei HTTP-Anforderungsmethoden . GET ist normalerweise dazu gedacht, einige Daten abzurufen, und es wird erwartet, dass es idempotent ist (das Wiederholen der Abfrage hat keine Nebenwirkungen) und nur begrenzte Mengen von Parameterdaten an den Server senden kann. GET-Anforderungen werden von einigen Browsern häufig standardmäßig zwischengespeichert, wenn Sie nicht vorsichtig sind.

Der POST dient zum Ändern des Serverstatus. Es enthält mehr Daten, und das Wiederholen der Abfrage kann (und wird häufig erwartet) Nebenwirkungen haben, z. B. das Erstellen von zwei Nachrichten anstelle von einer.

17
Victor Nicollet

Wenn Sie arbeiten RESTfully , sollte GET für Anfragen verwendet werden, bei denen Sie nur Daten erhalten, und POST sollte für Anfragen verwendet werden, bei denen Sie etwas bewirken.

Einige Beispiele:

  • Rufen Sie die Seite mit einer bestimmten SO Frage auf

  • Einen Kommentar posten

  • Senden Sie eine POST Anfrage, indem Sie auf die Schaltfläche "In den Warenkorb" klicken.

14
Skilldrick

Mit POST können Sie auch mehrteilige MIME-Codierungen durchführen, dh, Sie können auch Dateien anhängen. Wenn Sie Post-Variablen für die Seitennavigation verwenden, wird der Benutzer in einer Warnung gefragt, ob er den Post-Parameter erneut senden möchte. Normalerweise sehen sie in einer HTTP-Anfrage gleich aus, aber Sie sollten einfach bei POST bleiben, wenn Sie etwas an einen Server "POST" müssen, und "GET", wenn Sie etwas von einem Server abrufen müssen, da dies der Fall ist wie sie beabsichtigt waren.

6
Matt Williamson

Der einzige "große" Unterschied zwischen POST & GET (bei Verwendung mit AJAX) besteht darin, dass GET als URL bereitgestellt wird und ihre Länge begrenzt ist (da die URL nicht unendlich lang ist).

1
Activist