Jaký je rozdíl mezi HTTP GET a HTTP POST?

Tento formulář obsahuje potenciálně citlivé informace, takže musíte použít POST, ne GET.

GET vs. POST

Přísně řečeno, rozdíl mezi GET a POST spočívá v tom, jak jsou aplikace přenášeny. Informace v GET se přenášejí v adrese URL. Pokud jste někdy viděli adresu URL obsahující otazníky a odborové symboly, hledali jste požadavek GET: example.com/request.php?var1=foo&var2=bar je řetězec GET, který kóduje proměnnou "var1" jako "foo" a proměnnou "var2" jako "bar". Informace POST jsou součástí těla požadavku a v řetězci adresy URL se nezobrazují (a proto nejsou pro uživatele viditelné).

Formální pokyny

Formálně pokyny HTML říkají, že GET by mělo být použito pro "idempotentní" žádosti nebo požadavky, které nic nemění. Představte si například webovou stránku, která vrací místní počasí: "example.com/weather.php?zipcode=12345". Zákon o tom, že se tato žádost opakovaně nezmění. POST by měla být použita pro aplikace, které nejsou idempotentní. Předpokládejme například, že jste provedli nákup s vaší kreditní kartou. Prezentovat tuto žádost znovu a znovu by mohlo vést k poměrně velkým změnám. Protože opětovné odeslání požadavku na POST má důsledky (i když jsou menší), webové prohlížeče obvykle požadují, aby uživatel požádal o potvrzení, že skutečně chtějí znovu odeslat formulář dotazu.

Výhody GET

GET má řadu výhod oproti POST. Protože kód GET je kódován jako součást adresy URL, můžete tuto adresu URL vyjmout a vložit a sdílet ji s ostatními lidmi. Požadavky GET mohou být také označeny. Pokud pravidelně kontrolujete čas, můžete přidat "example.com/weather.php?zipcode=12345" do lišty "Oblíbené" vašeho prohlížeče, takže po kliknutí na tento odkaz automaticky načtete vlastní stránku počasí. Protože jsou požadavky GET viditelné (a upravitelné) uživatelem, mohou být také pirátové. Pokud například meteorologické stránky nenabídly zřejmý způsob, jak změnit polohu požadavku na počasí, můžete ručně změnit "12345" na "99762" a podívat se na počasí v Nome na Aljašce namísto počasí v Schenectady.

Kdy použít POST

Dokonce i v situacích, které jsou idempotentní, POST má příležitostné jasné použití. Některé z nich jsou založeny na zabezpečení nebo zákonnosti. Proměnné GET jsou přenášeny "jasně", protože nechcete odesílat informace o kreditních kartách, číslech sociálního zabezpečení, heslech nebo důvěrných informacích o uživateli prostřednictvím služby GET. Vzhledem k tomu, že data POST jsou tmavší, je v těchto situacích vhodnější. Funkce POST se používá také pro přenos velkého množství dat, i když data nejsou citlivá. Technicky mohou mít adresy URL (a proto proměnné GET) neomezenou délku. Protože mnoho prohlížečů omezuje, kolik místa má adresa URL, GET se obecně považuje za přiměřenou pouze pro relativně krátké požadavky.