Care este diferența dintre HTTP GET și HTTP POST?

Acest formular conține informații potențial sensibile, deci trebuie să utilizați POST, nu GET.

GET vs. POST

Strict vorbind, diferența dintre GET și POST constă în modul în care sunt transferate aplicațiile. Informațiile din GET sunt transmise în URL. Dacă ați văzut vreodată o adresă URL care include semne de întrebare și simboluri ale uniunii, ați căutat o solicitare GET: example.com/request.php?var1=foo&var2=bar este un șir GET care codifică variabila "var1" ca "foo" și variabila "var2" ca "bar". Informațiile POST sunt incluse în corpul solicitării și nu sunt vizibile în șirul de adrese URL (și, prin urmare, nu sunt vizibile de utilizator).

Formulare directe

Formal, liniile directoare HTML spun că GET ar trebui să fie folosit pentru cereri "idempotent" sau cereri care nu schimbă nimic. De exemplu, imaginați o pagină Web care returnează vremea locală: "example.com/weather.php?zipcode=12345". Actul de a prezenta cererea din nou și din nou nu schimbă nimic. POST ar trebui să fie utilizat pentru aplicații care nu sunt idempotent. De exemplu, să presupunem că efectuați o achiziție cu cardul dvs. de credit. Prezentarea acestei solicitări din nou și din nou ar putea duce la schimbări destul de mari. Deoarece retrimiterea unei cereri POST are consecinte (chiar daca acestea sunt minore), browserele web fac de obicei o cerere pentru ca utilizatorul sa confirme ca doresc cu adevarat sa retransmita formularul de interogare.

Avantajele GET

GET are o serie de avantaje față de POST. Deoarece GET este codificat ca parte a unei adrese URL, puteți să tăiați și să inserați adresa URL și să o distribuiți altor persoane. Cererile GET pot fi, de asemenea, marcate. Dacă verificați periodic timpul, puteți adăuga "example.com/weather.php?zipcode=12345" în bara "Preferințe" a browserului dvs. Deci, când dați clic pe linkul respectiv, încărcați automat pagina personalizată a vremii. Întrucât solicitările GET sunt vizibile (și pot fi editate) de către utilizator, ele pot fi și piratate. De exemplu, dacă site-ul meteorologic nu a oferit o modalitate evidentă de a schimba locația solicitării meteo, puteți schimba manual "12345" la "99762" pentru a vedea vremea în Nome, Alaska în loc de vremea din Schenectady.

Când să utilizați POST

Chiar și în situații care sunt idempotent, POST are ocazii clare de utilizare. Unele dintre acestea se bazează pe securitate sau legalitate. Variabilele GET sunt transmise "cu claritate", deoarece nu doriți să trimiteți informații prin intermediul GET despre carduri de credit, numere de securitate socială, parole sau informații confidențiale despre utilizatori. Deoarece datele POST devin mai întunecate, este de preferat în acele situații. POST este de asemenea utilizat pentru transmiterea unor cantități mari de date, chiar dacă datele nu sunt sensibile. Din punct de vedere tehnic, adresele URL (și, prin urmare, variabilele GET) pot avea o lungime nelimitată. Cu toate acestea, deoarece multe browsere limitează cât spațiu poate avea o adresă URL, GET este în general considerat adecvat doar pentru solicitări relativ scurte.