Wat is het verschil tussen POST en GET?

Ik ben pas sinds kort betrokken bij PHP/AJAX/jQuery en het lijkt mij dat een belangrijk onderdeel van deze technologieën die van POSTen GETzijn.

Ten eerste, wat is het verschil tussen POSTen GET? Door te experimenteren weet ik dat GETde terugkerende variabelen en hun waarden toevoegt aan de URL-tekenreeks

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

maar POSTniet.

Dus, is dit het enige verschil of zijn er specifieke regels of conventies voor het gebruik van de een of de ander?

Ten tweede heb ik POSTen GETook buiten PHP gezien: ook in AJAX en jQuery. Hoe verschillen POSTen GETtussen deze 3? Zijn ze hetzelfde idee, dezelfde functionaliteit, alleen anders gebruikt?


Antwoord 1, autoriteit 100%

GETen POSTzijn twee verschillende soorten HTTP-verzoeken.

Volgens Wikipedia:

GETvraagt om een weergave van de opgegeven bron. Houd er rekening mee dat GET niet mag worden gebruikt voor bewerkingen die bijwerkingen veroorzaken, zoals het gebruiken voor het uitvoeren van acties in webtoepassingen. Een reden hiervoor is dat GET willekeurig kan worden gebruikt door robots of crawlers, die geen rekening hoeven te houden met de bijwerkingen die een verzoek zou moeten veroorzaken.

en

POSTverzendt gegevens die moeten worden verwerkt (bijvoorbeeld van een HTML-formulier) naar de geïdentificeerde bron. De gegevens worden opgenomen in de hoofdtekst van het verzoek. Dit kan resulteren in het creëren van een nieuwe bron of de updates van bestaande bronnen of beide.

Dus in wezen wordt GETgebruikt om externe gegevens op te halen, en POSTwordt gebruikt om externe gegevens in te voegen/bij te werken.


HTTP/1.1-specificatie (RFC 2616) sectie 9 Methodedefinitiesbevat meer informatie over GETen POSTevenals de andere HTTP-methoden, als je geïnteresseerd bent.

Naast het uitleggen van het beoogde gebruik van elke methode, geeft de specificatie ook ten minste één praktische reden waarom GETalleen zou moeten worden gebruikt om gegevens op te halen:

Auteurs van services die het HTTP-protocol gebruiken, MOETEN GEEN GET-gebaseerde formulieren gebruiken voor het indienen van gevoelige gegevens, omdat deze gegevens hierdoor worden gecodeerd in de Request-URI. Veel bestaande servers, proxy’s en user agents zullen de verzoek-URI op een plaats loggen waar deze zichtbaar kan zijn voor derden. Servers kunnen in plaats daarvan op POST gebaseerde formulierverzending gebruiken


Tot slot, een belangrijke overweging bij het gebruik van GETvoor AJAX-verzoeken is dat sommige browsers – met name IE – de resultaten van een GET-verzoek in de cache opslaan. Dus als u bijvoorbeeld peilt met hetzelfde GET-verzoek, krijgt u altijd dezelfde resultaten terug, zelfs als de gegevens die u opvraagt server-side worden bijgewerkt. Een manier om dit probleem te verhelpen is om de URL uniek te maken voor elk verzoek door een tijdstempel toe te voegen.


Antwoord 2, autoriteit 23%

A POST, in tegenstelling tot een GET, heeft typisch relevante informatie in het lichaam van het verzoek. (A GETmag geen lichaam hebben, dus afgezien van cookies, de enige plaats om informatie in de URL.) Naast het bijhouden van de URL Relatief schoner, POSTU verzendt veel meer informatie (zoals URL’s beperkt zijn in lengte, voor alle praktische doeleinden) en kunt u met zowat elk type gegevens (bestandsuploadformulieren bijvoorbeeld niet GET– niet gebruiken – ze moeten POSTplus een speciaal inhoudstype / -codering gebruiken).

Afgezien van dat, een POSTblijkt dat het verzoek iets zal veranderen, en niet zou moeten worden herzoomd Willy-Nilly. Daarom ziet u soms uw browser om u te vragen of u de gegevensgegevens wilt opnieuw inschakelen wanneer u op de knop “Terug” drukt.

GET, aan de andere kant, moet idempotent zijn – wat betekent dat u het een miljoen keer kunt doen en de server zal hetzelfde doen (en tonen in feite de hetzelfde resultaat) elk en elke keer.


Antwoord 3, Autoriteit 7%

Hoewel er geen beschrijving van de verschillen, zijn hieronder een paar dingen om na te denken bij het kiezen van de juiste methode.

  • Krijgverzoeken kunnen in de cache worden door de browser die een probleem (of voordeel) kan zijn bij het gebruik van Ajax.
  • Krijg aanvragen Expose-parameters aan gebruikers (bericht doet net zo goed, maar ze zijn minder zichtbaar).
  • Post kan veel meer informatie aan de server doorgeven en kan van bijna elke lengte zijn.

Antwoord 4, Autoriteit 5%

Post en KRIJG zijn twee http aanvraag methoden . Krijg is meestal bedoeld om enkele gegevens op te halen en zal naar verwachting idempotent zijn (herhalen van de query heeft geen bijwerkingen) en kan alleen beperkte hoeveelheden parametergegevens verzenden naar de server. Krijgverzoeken worden vaak standaard in de cache opgeslagen door enkele browsers als u niet voorzichtig bent.

Post is bedoeld voor het wijzigen van de serverstatus. Het draagt ​​meer gegevens en het herhalen van de query is toegestaan ​​(en vaak verwacht) om bijwerkingen te hebben, zoals het maken van twee berichten in plaats van één.


Antwoord 5, Autoriteit 4%

Als u rustgevend krijgt, moet worden gebruikt voor aanvragen waar u alleen gegevens krijgt en post moet worden gebruikt voor verzoeken waar u iets gebeurt.

Enkele voorbeelden:

  • Verkrijg de pagina met een bepaalde SO VRAAG

  • Plaats een reactie

  • Stuur een berichtverzoek door op de knop “Toevoegen aan winkelwagentje” te klikken.


Antwoord 6, Autoriteit 2%

Met POST kunt u ook een mate-mime-codering uitvoeren, wat betekent dat u ook bestanden kunt bijvoegen. Ook als u postvariabelen gebruikt in navigatie van pagina’s, krijgt de gebruiker een waarschuwing waarin wordt gevraagd of ze de parameter POST willen opnieuw vermengd. Meestal zien ze er hetzelfde uit in een HTTP-verzoek, maar je moet gewoon plakken om te plaatsen als je iets nodig hebt met een server en “Krijg” als je iets van een server moet krijgen, want dat is de manier waarop ze zijn bedoeld.


Antwoord 7

Het enige “grote” verschil tussen post & amp; Krijg (bij gebruik van ze met Ajax) is Aangezien GET URL is verstrekt, ze zijn beperkt in de lengte (sinds URL arent oneindig in lengte).

Other episodes