it-swarm.com.de

Wann sollte ich GET oder POST method? Was ist der Unterschied zwischen ihnen?

Was ist der Unterschied bei der Verwendung der GET - oder POST -Methode? Welches ist sicherer? Was sind die (Un-) Vorteile eines jeden von ihnen?

( ähnliche Frage )

227
Adriana

Es geht nicht um Sicherheit. Das HTTP-Protokoll definiert GET-Anforderungen als idempotent , während POSTs Nebenwirkungen haben können. Im Klartext bedeutet dies, dass GET zum Anzeigen von Objekten verwendet wird, ohne diese zu ändern, während POST zum Ändern von Objekten verwendet wird. Eine Suchseite sollte beispielsweise GET verwenden, während sich ein Formular ändert Ihr Passwort sollte POST verwenden.

Beachten Sie auch, dass PHP die Konzepte ein wenig verwirrt. Eine POST Anfrage wird aus der Abfragezeichenfolge und über den Anfragetext eingegeben. Eine GET-Anfrage wird nur eingegeben aus der Abfragezeichenfolge. Eine POST Anfrage ist also eine Obermenge einer GET Anfrage; Sie können $_GET in einer POST Anfrage und Es kann sogar sinnvoll sein, Parameter mit demselben Namen in $_POST und $_GET zu haben, die unterschiedliche Bedeutungen haben.

Angenommen, Sie haben ein Formular zum Bearbeiten eines Artikels. Die Artikel-ID befindet sich möglicherweise in der Abfragezeichenfolge (und ist daher über $_GET['id'] Verfügbar). Nehmen wir jedoch an, Sie möchten die Artikel-ID ändern. Die neue ID kann dann im Anforderungshauptteil vorhanden sein ($_POST['id']). OK, vielleicht ist das nicht das beste Beispiel, aber ich hoffe, es zeigt den Unterschied zwischen den beiden.

241
troelskn

Wenn der Benutzer Informationen in ein Formular eingibt und auf Senden klickt, gibt es zwei Möglichkeiten, wie die Informationen vom Browser an den Server gesendet werden können: in der URL oder im Hauptteil der HTTP-Anforderung.

Die im vorherigen Beispiel verwendete GET-Methode hängt Name/Wert-Paare an die URL an. Leider ist die Länge einer URL begrenzt, sodass diese Methode nur funktioniert, wenn nur wenige Parameter vorhanden sind. Die URL kann abgeschnitten werden, wenn das Formular eine große Anzahl von Parametern verwendet oder wenn die Parameter große Datenmengen enthalten. Außerdem werden die über die URL übergebenen Parameter im Adressfeld des Browsers angezeigt. Dies ist nicht der beste Ort, an dem ein Kennwort angezeigt werden kann.

Die Alternative zur Methode GET ist die Methode POST. Diese Methode packt die Name/Wert-Paare im Hauptteil der HTTP-Anforderung, wodurch die URL übersichtlicher wird und die Größe der Formulare nicht eingeschränkt wird Es ist auch sicherer.

75
IAdapter

Die beste Antwort war die erste.

Du benutzt:

  • GET wenn Sie Daten abrufen möchten (GET DATA).
  • POST wenn Sie Daten senden möchten (POST DATA).
37
alex

Die Verwendung von GET hat zwei allgemeine Auswirkungen auf die "Sicherheit". Da Daten in der URL-Zeichenfolge angezeigt werden, kann möglicherweise jemand, der über Ihre Schulter in die Adressleiste/URL blickt, etwas anzeigen, das nicht als vertraulich eingestuft werden sollte, z. Denken Sie daran jeder hat Kamerahandys.

Die andere Auswirkung von GET auf die Sicherheit hat damit zu tun, dass GET-Variablen als Teil der anfragenden URL im Zugriffsprotokoll der meisten Webserver protokolliert werden. Abhängig von der Situation, dem regulatorischen Umfeld und der allgemeinen Sensibilität der Daten kann dies möglicherweise zu Bedenken führen.

Einige Clients/Firewalls/IDS-Systeme können bei GET-Anforderungen, die eine übermäßige Datenmenge enthalten, die Stirn runzeln und daher unzuverlässige Ergebnisse liefern.

Der POST unterstützt erweiterte Funktionen wie die Unterstützung mehrteiliger Binäreingaben, die zum Hochladen von Dateien auf Webserver verwendet werden.

POST erfordert einen inhaltslangen Header, der die Komplexität einer anwendungsspezifischen Client-Implementierung erhöhen kann, da die Größe der übermittelten Daten im Voraus bekannt sein muss, um zu verhindern, dass eine Client-Anfrage in einem ausschließlich inkrementellen Single-Pass-Modus erstellt wird. Vielleicht ein kleines Problem für diejenigen, die sich für den Missbrauch von HTTP als RPC-Transport (Remote Procedure Call) entscheiden.

Andere haben bereits gute Arbeit geleistet, um die semantischen Unterschiede und den "Wann" -Teil dieser Frage zu behandeln.

20
Einstein

Ich verwende GET beim Abrufen von Informationen von einer URL und POST beim Senden von Informationen an einer URL.

17
Mark Biek

Sie sollten POST wenn es viele Daten gibt, oder Art von vertraulichen Informationen (wirklich vertrauliche Sachen brauchen auch eine sichere Verbindung).

Verwenden Sie GET, wenn Sie möchten, dass Benutzer Ihre Seite mit einem Lesezeichen versehen können, da alle Daten im Lesezeichen enthalten sind.

Seien Sie vorsichtig, wenn Sie mit der GET-Methode auf REFRESH klicken, da die Daten jedes Mal erneut gesendet werden, ohne den Benutzer zu warnen (POST warnt den Benutzer manchmal vor erneutem Senden von Daten).

16
Grant

Dieses W3C-Dokument erklärt die Verwendung von HTTP GET und POST.

Ich denke, es ist eine maßgebliche Quelle.

Die Zusammenfassung ist (Abschnitt 1.3 des Dokuments):

  • Verwenden Sie [~ # ~] get [~ # ~] , wenn die Interaktion eher einer Frage ähnelt (dh es handelt sich um eine sichere Operation wie eine Abfrage , Leseoperation oder Nachschlagen).
  • Verwenden Sie [~ # ~] nach [~ # ~] , wenn:
    • Die Interaktion ist eher wie eine Bestellung oder
    • Die Interaktion ändert den Zustand der Ressource auf eine Weise, die der Benutzer wahrnehmen würde (z. B. ein Abonnement für einen Dienst), oder
    • Der Benutzer ist für die Ergebnisse der Interaktion verantwortlich.
13
chus

Get- und Post-Methoden haben nichts mit der von Ihnen verwendeten Servertechnologie zu tun, sie funktionieren auch in PHP, ASP.NET oder Ruby. GET und POST sind Teil des HTTP-Protokolls. Wie bereits erwähnt, ist POST sicherer. POST= Formulare ebenfalls nicht Vom Browser zwischengespeichert. POST wird auch zum Übertragen großer Datenmengen verwendet.

10
sarsnake

Der Grund für die Verwendung von POST bei Änderungen an Daten:

  • Ein Web Accelerator wie Google Web Accelerator klickt auf alle (GET-) Links auf einer Seite und speichert sie im Cache. Dies ist sehr schlecht, wenn die Links Änderungen an den Dingen vornehmen.
  • Ein Browser speichert GET-Anforderungen zwischen, sodass der Benutzer möglicherweise keine Anforderung zum Ausführen der Änderung an den Server sendet, selbst wenn er auf den Link klickt.
  • Um Ihre Site/Anwendung vor CSRF zu schützen, müssen Sie POST verwenden. Um Ihre App vollständig abzusichern, müssen Sie außerdem eine eindeutige Kennung auf dem Server generieren und diese in der Anfrage mitsenden.

Fügen Sie auch keine vertraulichen Informationen in die Abfragezeichenfolge ein (nur bei GET möglich), da diese in der Adressleiste, den Lesezeichen und den Serverprotokollen angezeigt werden.

Hoffentlich erklärt dies, warum Leute POST ist "sicher". Wenn Sie vertrauliche Daten übertragen, müssen Sie SSL verwenden.

8
Sarel Botha

GET und POST sind HTTP-Methoden, mit denen ähnliche Ziele erreicht werden können

GET dient im Grunde nur zum Abrufen von Daten. A GET sollte keinen Body haben. Abgesehen von Cookies ist der einzige Ort, an dem Informationen weitergegeben werden, die URL und die URLs sind in der Länge begrenzt , GET ist weniger sicher als POST, da die gesendeten Daten Teil der URL sind

Verwenden Sie GET niemals zum Senden von Passwörtern, Kreditkarten oder anderen vertraulichen Informationen! Daten sind für jeden in der URL sichtbar. Daten können zwischengespeichert werden. GET ist harmlos, wenn wir den Button neu laden oder zurückrufen. Er wird mit einem Lesezeichen versehen. Die Parameter bleiben im Browserverlauf. Es sind nur ASCII Zeichen zulässig.

POST kann alles beinhalten, wie das Speichern oder Aktualisieren von Daten, das Bestellen eines Produkts oder das Senden von E-Mails. POST Methode hat einen Body.

Die Methode POST ist für die Übermittlung vertraulicher und vertraulicher Informationen an den Server gesichert. Sie wird in Abfrageparametern in der URL nicht angezeigt und Parameter werden nicht im Browserverlauf gespeichert. Es gibt keine Einschränkungen hinsichtlich der Datenlänge. Beim erneuten Laden sollte der Browser den Benutzer darüber informieren, dass die Daten erneut übermittelt werden. Die Methode POST kann nicht mit einem Lesezeichen versehen werden

6
user3540599
  1. Die Methode GET wird zum Senden der weniger vertraulichen Daten verwendet, während die Methode POST zum Senden der vertraulichen Daten verwendet wird.
  2. Mit der Methode POST können Sie im Vergleich zur Methode GET große Datenmengen senden.
  3. Die von der GET-Methode gesendeten Daten werden in der Kopfzeile des Browsers angezeigt, wohingegen die von der POST -Methode gesendeten Daten unsichtbar sind.
2
Dhirendra

Verwenden Sie die GET-Methode, wenn Sie die Ressourcen von der URL abrufen möchten. Sie könnten immer die letzte Seite sehen, wenn Sie auf die Schaltfläche "Zurück" Ihres Browsers klicken, und sie könnte mit einem Lesezeichen versehen sein, sodass sie nicht so sicher ist wie die POST -Methode.

Verwenden Sie die POST -Methode, wenn Sie etwas an die URL "senden" möchten. Sie möchten beispielsweise ein Google-Konto erstellen und müssen möglicherweise alle detaillierten Informationen eingeben, und klicken dann auf "Senden" Klicken Sie auf die Schaltfläche '(hier wird die POST-Methode aufgerufen). Sobald Sie erfolgreich gesendet haben und versuchen, die Schaltfläche Ihres Browsers zu drücken, wird anstelle der letzten Seite mit ausgefülltem Formular eine Fehlermeldung oder ein neues leeres Formular angezeigt.

0
rObOtAndChalie