POST (HTTP)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 30. ledna 2019; kontroly vyžadují 14 úprav .

V programování je POST  jednou z mnoha metod požadavků podporovaných protokolem HTTP používaným na World Wide Web. Metoda požadavku POST slouží k odeslání požadavku, kdy webový server přijímá data v těle zprávy k uložení. Často se používá k nahrání souboru nebo odeslání vyplněného webového formuláře .

Naproti tomu metoda HTTP GET je navržena pro příjem informací ze serveru. V rámci požadavku GET mohou být v řetězci dotazu URI předána některá data, která označují například hledané výrazy, rozsahy dat nebo jiné informace, které definují požadavek. Jako součást požadavku POST lze na server odeslat libovolné množství dat libovolného typu v těle zprávy požadavku. Pole záhlaví v požadavku POST obvykle označují typ obsahu .

Odesílání dat

World Wide Web a protokol HTTP jsou založeny na řadě metod požadavků nebo „sloves“, včetně POST a GET, stejně jako PUT, DELETE a řady dalších. Webové prohlížeče obvykle používají pouze GET a POST, ale online aplikace REST vyžadují mnohem více. Metoda POST je určena k odeslání reprezentace nové entity na server, takže bude uložena jako dílčí zdroj zdroje identifikovaného pomocí URI. Například pro URI http://example.com/customers  (unreachable link) mohou požadavky POST představovat nové zákazníky, z nichž každý obsahuje jméno, adresu, kontaktní informace a podobně. Vývojáři webových stránek od tohoto konceptu ustoupili ze dvou důvodů. Za prvé, neexistuje žádný technický důvod, aby URI textově popisoval základní webové zdroje, kde budou uložena data odeslaná metodou POST. Poslední část URI spíše popisuje stránku zpracování webové aplikace a její technologii, jako je http://example.com/applicationform.php  (mrtvý odkaz) . Zadruhé, vzhledem k přirozenému omezení většiny webových prohlížečů používat pouze metody GET nebo POST, vývojáři uznali potřebu přidat do metody POST další funkce, včetně úpravy existujících záznamů a jejich mazání.

Pokusy napravit první nedostatek začaly v roce 1998. Webové aplikační rámce , jako je Ruby on Rails a další, pomohly vývojářům poskytnout uživatelům čitelné adresy URL . Pokud jde o druhý bod, můžete psát skripty na straně klienta nebo samostatné aplikace, které budou používat jiné metody HTTP, a poté je převést na metodu POST.

Čili nelze říci, že každý webový formulář musí v úvodní značce obsahovat metodu POST. Mnoho formulářů se používá přesněji k získávání informací ze serveru, aniž by se měnily podkladové databáze. Pro takové vyhledávací formuláře je ideální metoda GET.

Jsou chvíle, kdy je HTTP GET méně vhodný i pro získávání dat. Příkladem je situace, kdy je potřeba do URL zapsat velké množství dat. Prohlížeče a webové servery mohou mít omezení délky adres URL , které zpracovávají bez zkrácení nebo chyby. Kódování vyhrazených znaků v adrese a řetězci dotazu může výrazně prodloužit délku, zatímco Apache HTTP Server dokáže zpracovat až 4000 znaků (8190 bajtů) v URL [1] , Microsoft Internet Explorer omezuje délku jakékoli adresy URL na 2048 znaky .

Stejně tak by se HTTP GET nemělo používat pro citlivé informace, jako jsou uživatelská jména a hesla, které je nutné poskytnout spolu s dalšími údaji pro dokončení požadavku. Dokonce i s protokolem HTTPS , který zabraňuje odposlechu při přenosu, historie prohlížeče a protokoly webového serveru pravděpodobně obsahují úplné adresy URL v prostém textu, které lze nalézt v případě napadení systému. V těchto případech se používá HTTP POST.

Použít pro odesílání webových formulářů

Když webový prohlížeč odešle požadavek POST s prvky webového formuláře, výchozí datový typ internetového média je application/x-www-form-urlencoded. Jedná se o formát pro kódování párů klíč-hodnota s možností duplicitních klíčů. Každý pár klíč–hodnota je oddělen &, klíč je oddělen od hodnoty =. V klíčích a hodnotách jsou mezery nahrazeny +a poté pomocí kódování adresy URL jsou nahrazeny všechny nealfanumerické znaky.

Například,

Jméno: Jonathan Doe Věk: 23 Vzorec: a + b == 13 %!

bude zakódováno jako

Jméno=Jonathan+Doe&Věk=23&Vzorec=a+%2B+b+%3D%3D+13+%25%21

Od HTML 4.0 mohou formuláře také odesílat data v multipart/form , jak je definováno v RFC 2388 (viz také RFC 1867 pro dřívější experimentální verzi definovanou jako rozšíření HTML 2.0 a odkazovanou v HTML 3.2). Zvláštní případ metody POST při přístupu na stejnou stránku, která vlastní formulář, se nazývá postback.

Vliv na stav serveru

V RFC 2616 musí být metoda POST použita pro jakýkoli kontext, ve kterém požadavek není idempotentní : to znamená, že způsobí změnu stavu serveru pokaždé, když je spuštěn, jako je zveřejnění komentáře k příspěvku na blogu nebo hlasování na internetu. V praxi je metoda GET často vyhrazena nejen pro idempotentní akce, ale také pro nullpotentní, tedy bez vedlejších efektů (na rozdíl od „žádných vedlejších efektů na druhý a další požadavek“ jako u idempotentních operací). Z tohoto důvodu stránky vyhledávačů, jako jsou indexátory vyhledávačů, obvykle používají metodu GET výhradně k tomu, aby zabránily automatickým žádostem v provádění jakékoli akce.

Existují však důvody, proč se POST používá i pro idempotentní požadavky, zejména pokud požadavek používá znaky jiné než ASCII nebo je velmi dlouhý, kvůli omezením URL - řetězec dotazu metody GET může být velmi dlouhý, zejména při použití kódování URL.

Poznámky

  1. jádro - Apache HTTP Server verze 2.2 . httpd.apache.org. Získáno 18. dubna 2019. Archivováno z originálu dne 22. května 2014.

Odkazy