Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen GET und POST in HTTP?

Was ist der Unterschied zwischen GET und POST in HTTP?

零下一度
零下一度Original
2017-06-23 13:08:031446Durchsuche

Der Unterschied zwischen GET und POST in HTTP

GET und POST sind die beiden grundlegenden Methoden von HTTP-Anfragen. Jeder, der mit der WEB-Entwicklung vertraut ist, kann den Unterschied erkennen.

Der intuitivste Unterschied besteht darin, dass GET Parameter in die URL einschließt und POST Parameter über den Anfragetext weiterleitet.

Möglicherweise haben Sie selbst unzählige GET- und POST-Anfragen geschrieben oder viele maßgebliche Websites gelesen, in denen die Unterschiede zusammengefasst sind. Sie wissen genau, wann Sie welche verwenden müssen.

Wenn Ihnen diese Frage in einem Vorstellungsgespräch gestellt wird, ist Ihr Herz voller Zuversicht und Freude.

Sie haben ganz einfach eine „Standardantwort“ gegeben:

  • GET ist ungültig, wenn der Browser „Schädlich“ zurückgibt, und POST sendet das erneut anfordern.

  • Die von GET generierte URL-Adresse kann mit einem Lesezeichen versehen werden, POST jedoch nicht.

  • GET-Anfragen werden vom Browser aktiv zwischengespeichert, POST jedoch nicht, sofern dies nicht manuell festgelegt wird.

  • GET-Anfragen können nur URL-codiert werden, während POST mehrere Codierungsmethoden unterstützt.

  • GET-Anfrageparameter werden vollständig im Browserverlauf beibehalten, während Parameter in POST nicht beibehalten werden.

  • Die in der URL der GET-Anfrage übertragenen Parameter haben Längenbeschränkungen, für POST gibt es jedoch keine Längenbeschränkung.

  • Bezüglich des Datentyps der Parameter akzeptiert GET nur ASCII-Zeichen, während POST keine Einschränkungen hat.

  • GET ist weniger sicher als POST, da die Parameter direkt auf der URL verfügbar sind und daher nicht zur Weitergabe vertraulicher Informationen verwendet werden können.

  • GET-Parameter werden über die URL übergeben und POST wird im Anforderungstext platziert.

(Auf diese Standardantwort wird von w3schools verwiesen)

„Leider ist das nicht die Antwort, die wir wollen!“

Bitte sag mir die Wahrheit. . .

Wenn ich Ihnen sagen würde, dass es im Wesentlichen keinen Unterschied zwischen GET und POST gibt, würden Sie es glauben?
Lassen Sie uns den Mantel von GET und POST ablegen und ehrlich zueinander sein!

Was sind GET und POST? Zwei Methoden zum Senden von Anfragen im HTTP-Protokoll.

Was ist HTTP? HTTP ist ein auf TCP/IP basierendes Protokoll zur Art und Weise, wie Daten im World Wide Web kommuniziert werden.

Die unterste Schicht von HTTP ist TCP/IP. Die unterste Ebene von GET und POST ist also ebenfalls TCP/IP, das heißt, GET/POST sind beide TCP-Verbindungen. GET und POST können dasselbe tun. Sie müssen einen Anforderungstext zu GET und URL-Parameter zu POST hinzufügen. Technisch gesehen ist dies völlig machbar.

Was sind also die Unterschiede bei den „Standardantworten“?

In unserer Welt des World Wide Web ist TCP wie ein Auto. Wir verwenden TCP zum Transport von Daten. Es ist sehr zuverlässig und es wird nie etwas fehlen. Aber wenn alle Autos auf der Straße genau gleich aussehen, wird die Welt wie ein Chaos aussehen. Autos, die dringende Nachrichten übermitteln, werden möglicherweise von mit Gütern beladenen Autos vor ihnen blockiert, und das gesamte Transportsystem wird definitiv lahmgelegt. Um dies zu verhindern, wurden Traffic Rules HTTP entwickelt. HTTP hat mehrere Dienstkategorien für den Autotransport festgelegt, darunter GET, POST, PUT, DELETE usw. HTTP schreibt vor, dass das Auto beim Ausführen einer GET-Anfrage mit einem GET gekennzeichnet werden muss (setzen Sie die Methode auf GET) und dass Put erforderlich ist Übertragene Daten auf dem Dach des Autos (in der URL) zur einfachen Aufzeichnung. Handelt es sich um eine POST-Anfrage, muss ein POST-Etikett am Wagen angebracht und die Ware in den Wagen gelegt werden. Natürlich können Sie während des GET auch einige Waren heimlich im Auto verstecken, aber das ist sehr schändlich. Sie können während des POST auch einige Daten auf das Dach legen, was die Leute albern macht. HTTP ist lediglich ein Verhaltenskodex und TCP ist die Grundlage für die Implementierung von GET und POST.

Wir sehen jedoch nur, dass HTTP Anforderungen an den Übertragungskanal (URL oder Anforderungstext) der GET- und POST-Parameter stellt. Woher kommt die Begrenzung der Parametergröße in der „Standardantwort“?

In unserer Welt des World Wide Web gibt es noch eine weitere wichtige Rolle: Transportunternehmen. Unterschiedliche Browser (die HTTP-Anfragen initiieren) und Server (die HTTP-Anfragen akzeptieren) sind unterschiedliche Transportunternehmen. Obwohl Sie theoretisch unbegrenzt Waren auf dem Dach des Autos stapeln können (der URL können unbegrenzt viele Parameter hinzugefügt werden). Aber Transportunternehmen sind auch nicht dumm. Sie begrenzen das Volumen einer einzelnen Sendung, um die Risiken zu kontrollieren. Die ungeschriebene Regel in der Branche besagt, dass (die meisten) Browser die URL-Länge normalerweise auf 2 KB begrenzen und (die meisten) Server URLs mit einer Größe von bis zu 64 KB verarbeiten können. Etwaige Überschüsse werden nicht bearbeitet. Wenn Sie den GET-Dienst verwenden und Daten heimlich im Anforderungstext verbergen, gehen verschiedene Server unterschiedlich damit um, die Daten zu entladen und zu lesen, während andere sie direkt ignorieren Der Empfang kann nicht garantiert werden.

Okay, jetzt wissen Sie, dass GET und POST im Wesentlichen TCP-Links sind, es gibt keinen Unterschied. Aufgrund von HTTP-Vorschriften und Browser-/Servereinschränkungen weisen sie jedoch einige Unterschiede im Bewerbungsprozess auf.

Glauben Sie, dass dieser Artikel so endet?

Unser großer BOSS wartet immer noch auf seinen Auftritt. . .

Wie mysteriös ist dieser BOSS? Wenn Sie versuchen, im Internet den „Unterschied zwischen GET und POST“ zu finden, wird dieser in den Suchergebnissen, die Sie sehen, nie erwähnt. Was genau ist er? . .

Es gibt einen weiteren großen Unterschied zwischen GET und POST:

GET generiert ein TCP-Datenpaket;

Langer Weg:

Für eine GET-Anfrage sendet der Browser den HTTP-Header und die Daten zusammen und der Server antwortet mit 200 (Rückgabedaten);

Und für POST, der Browser sendet zuerst den Header, der Server antwortet mit 100 weiter, der Browser sendet dann Daten und der Server antwortet mit 200 ok (Rückgabedaten).

Mit anderen Worten: GET benötigt nur eine Fahrt mit dem Auto, um die Waren zu liefern, während POST zwei Fahrten erfordert. Gehen Sie bei der ersten Fahrt zum Server und sagen Sie „Hallo, ich werde eine liefern.“ später.“ Wenn die Ware ankommt, öffnen Sie die Tür, um mich zu begrüßen, und gehen dann zurück, um die Ware auszuliefern.

Da POST zwei Schritte erfordert und etwas mehr Zeit in Anspruch nimmt, scheint GET effizienter als POST zu sein. Daher empfiehlt das Yahoo-Team, POST durch GET zu ersetzen, um die Website-Leistung zu optimieren. Aber das ist eine Falle! Gehen Sie vorsichtig vor. Warum?

1. GET und POST haben ihre eigene Semantik und können nicht zufällig gemischt werden.

2. Laut Untersuchungen kann der Unterschied zwischen dem Zeitpunkt des Sendens eines Pakets und dem Zeitpunkt des Sendens zweier Pakete grundsätzlich ignoriert werden, wenn die Netzwerkumgebung gut ist. Im Falle einer schlechten Netzwerkumgebung bietet TCP mit zwei Paketen große Vorteile bei der Überprüfung der Integrität von Datenpaketen.

3. Nicht alle Browser senden das Paket zweimal im POST, Firefox sendet es nur einmal.

Wenn der Interviewer Sie nun nach dem „Unterschied zwischen GET und POST“ fragt, spüren Sie das in Ihrem Herzen?

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen GET und POST in HTTP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn