GET a POST jsou dvě nejčastěji používané metody požadavku HTTP. Požadavky GET se obvykle používají k vyžádání webových stránek, zatímco POST se používá k odesílání dat na webový server, například prostřednictvím webového formuláře.
Tip: I když se nazývají metody HTTP, GET i POST se používají také v HTTPS.
Jedním z důležitých rozdílů je, že všechny parametry zahrnuté v požadavcích GET jsou zahrnuty v samotné adrese URL, zatímco parametry v požadavcích POST jsou součástí těla požadavku.
Například adresa URL požadavku GET může vypadat jako „GET.php?parametr=hodnota“, zatímco adresa URL pro požadavek POST bude vypadat jako „POST.php“ a pak mít v těle požadavku nastaveno „parametr=hodnota“.
Jedním z klíčových důsledků toho je, že když webové servery protokolují požadavky, požadovaná adresa URL je vždy protokolována. Takže u požadavků GET jsou parametry také protokolovány, v případě požadavků POST, ačkoli hodnoty nejsou protokolovány, protože tělo požadavku není protokolováno. To je důležité zejména pro formuláře, které obsahují citlivá data, jako jsou hesla nebo PII (Personally Identifiable Information), protože použití POST znamená, že tyto informace nebudou přihlášeny na webové servery.
Mezi další rozdíly mezi GET a POST patří skutečnost, že požadavky GET mohou být uloženy do mezipaměti prohlížeče nebo mezipaměti třetích stran, požadavky GET jsou zahrnuty v historii prohlížeče a lze je uložit do záložek. Srovnávané požadavky POST se nikdy neukládají do mezipaměti, neukládají se do historie prohlížeče a nelze je přidat do záložek.
Je možné nakonfigurovat formuláře tak, aby používaly požadavek GET k odesílání dat na webový server, ale dělat to je špatný nápad, protože do hry vstupují všechny tyto faktory. Je to zvláště důležité u citlivých formulářů, jako jsou přihlašovací formuláře, protože pokud by byl tento požadavek zaprotokolován, prozradilo by se heslo uživatele, a pokud by odpověď byla uložena do mezipaměti třetí stranou, umožnilo by to ostatním uživatelům přihlásit se k účtu uživatele.