Heim  >  Artikel  >  Web-Frontend  >  99 % der Menschen missverstehen den Unterschied zwischen GET und POST in HTTP (Nachdruck

99 % der Menschen missverstehen den Unterschied zwischen GET und POST in HTTP (Nachdruck

WBOY
WBOYOriginal
2016-10-10 11:41:03925Durchsuche

GET und POST sind die beiden grundlegenden Methoden von HTTP-Anfragen. Jeder, der mit der WEB-Entwicklung vertraut ist, kann den Unterschied zwischen ihnen 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 harmlos, wenn der Browser ein Rollback durchführt, während POST die Anfrage erneut sendet.

  • 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 sie nicht manuell festgelegt werden.

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

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

  • Es gibt eine Längenbeschränkung für die in der URL für die GET-Anfrage übertragenen Parameter, 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 in 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, nach der wir suchen!"

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 werden nie irgendwelche Elemente 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 der GET- und POST-Parameter (URL oder Anforderungstext) 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 Anforderungshauptteil verbergen, gehen verschiedene Server unterschiedlich damit um, die Daten zu entladen und zu lesen, während einige Server sie direkt ignorieren Kann garantiert nicht empfangen 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 wichtigen Unterschied zwischen GET und POST. Einfach ausgedrückt:

GET generiert ein TCP-Datenpaket; POST generiert zwei TCP-Datenpakete.

Der Lange sagte:

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

Beim POST sendet der Browser zuerst den Header, der Server antwortet mit 100 continue, 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 hin und sagen Sie „Hallo“, ich werde eine Ladung liefern Waren später. „Sie öffnen die Tür, um mich zu begrüßen“, und drehten sich dann um, um die Waren 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?

(Originalartikel, bitte geben Sie den Nachdruck aus dem öffentlichen WeChat-Konto WebTechGarden an)

(Wenn der Artikel Fehler enthält, können Sie diese gerne korrigieren)

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