Kakva je razlika između HTTP GET i HTTP POST?

GET vs. POST

Strogo govoreći, razlika između GET i POST-a leži u načinu prijenosa aplikacija. Podaci u GET-u prenose se u URL. Ako ste ikada vidjeli URL koji sadrži upitnike i simbole unije, tražili ste GET zahtjev: example.com/request.php?var1=foo&var2=bar je GET niz koji kodira varijablu "var1" kao "foo" i varijabla "var2" kao "bar". Podaci o POST-u uključeni su u tijelo zahtjeva i nisu vidljivi u nizu URL-ova (i samim tim nisu vidljivi korisniku).

Formalne smjernice

Formalno, HTML smjernice kažu da se GET treba koristiti za "idempotentne" zahtjeve ili zahtjeve koji ništa ne mijenjaju. Na primjer, zamislite web stranicu koja vraća lokalno vrijeme: "example.com/weather.php?zipcode=12345". Sam čin podnošenja tog zahtjeva iznova i iznova ne mijenja ništa. POST treba koristiti za zahtjeve koji nisu idempotentni. Na primjer, pretpostavimo da ste kupovali kreditnom karticom. Podnošenje ove molbe iznova i iznova može dovesti do prilično velikih promjena. Budući da ponovno podnošenje zahtjeva za POST ima posljedice (čak i ako su one manje), web-preglednici obično postavljaju zahtjev da korisnik potvrdi da zaista želi ponovno poslati obrazac upita.

DOBIJITE prednosti

GET ima niz prednosti u odnosu na POST. Budući da je GET kodiran kao dio URL-a, možete ga izrezati i zalijepiti i podijeliti s drugima. GET zahtjevi mogu se također označiti. Ako povremeno provjeravate vremenske prilike, na traku "Favoriti" svog preglednika možete dodati "example.com/weather.php?zipcode=12345", tako da klikom na tu vezu automatski učitate svoju prilagođenu stranicu s vremenom. Budući da korisnik GET zahtjeve vidi (i može ih uređivati), također ih se može hakirati. Na primjer, ako vremenska lokacija nije ponudila očigledan način promjene mjesta zahtjeva za vrijeme, možete ručno promijeniti "12345" u "99762" da biste pogledali vrijeme u Nome, Aljaska, umjesto vremena u Schenectadyju.

Kada koristiti POST

Čak i u situacijama koje su nemoćne, POST ima povremene jasne svrhe. Neki od njih temelje se na sigurnosti ili zakonitosti. GET varijable se prenose "jasno", jer preko GET-a ne želite slati podatke o kreditnoj kartici, brojeve socijalnog osiguranja, lozinke ili povjerljive korisničke podatke. Budući da podaci POST-a postaju tamniji, u tim je situacijama poželjno. POST se također koristi za prijenos velikih količina podataka, čak i ako podaci nisu osjetljivi. Tehnički, URL-ovi (a samim tim i GET varijable) mogu biti neograničeni u duljini. Međutim, s obzirom na to da mnogi preglednici ograničavaju koliko prostora može imati URL, GET se obično smatra prikladnim samo za relativno kratke zahtjeve.

Zanimljivi Članci