GET og POST er de to mest almindeligt anvendte HTTP-anmodningsmetoder. Typisk bruges GET-anmodninger til at anmode om websider, mens POST bruges til at sende data til webserveren, såsom gennem en webformular.
Tip: Selvom de kaldes HTTP-metoder, bruges både GET og POST også i HTTPS.
En af de vigtige forskelle er, at alle parametre, der er inkluderet i GET-anmodninger, er inkluderet i selve URL-adressen, mens parametre i POST-anmodninger er en del af anmodningskroppen.
For eksempel kan en GET-anmodnings-URL se ud som "GET.php? parameter=værdi", hvorimod URL'en for en POST-anmodning ville se ud som "POST.php" og derefter have "parameter=værdi" indstillet i anmodningens brødtekst.
En af de vigtigste konsekvenser af dette er, at når webservere logger anmodninger, bliver den anmodede URL altid logget. Så for GET-anmodninger logges parametrene også, i tilfælde af POST-anmodninger, selvom værdierne ikke logges, da hovedteksten i anmodningen ikke logges. Dette er især vigtigt for formularer, der indeholder følsomme data såsom adgangskoder eller PII (Personligt identificerbare oplysninger), da brug af POST betyder, at disse oplysninger ikke bliver logget ind webservere.
Andre forskelle mellem GET og POST inkluderer det faktum, at GET-anmodninger kan cachelagres af browseren eller tredjeparts caches, GET-anmodninger er inkluderet i browserhistorikken og kan bogmærkes. POST-anmodninger i sammenligning cachelagres aldrig, gemmes ikke i browserhistorikken og kan ikke bogmærkes.
Det er muligt at konfigurere formularer til at bruge en GET-anmodning til at sende data til webserveren, men at gøre det er en dårlig idé, da alle disse faktorer spiller ind. Det er især vigtigt for følsomme formularer såsom loginformularer, da hvis denne anmodning blev logget, ville den afsløre brugerens adgangskode, og hvis svaret blev cachelagret af en tredjepart, kunne det lade andre brugere logge ind på brugerens konto.