HTTP metody GET a POST

Kdy použít metodu GET a kdy POST. Rozdíly mezi metodami, datové limity a doporučení pro správné použití.

7 minut

HTTP metody GET a POST jsou dva základní způsoby, jak prohlížeč komunikuje se serverem. Jejich správné použití ovlivňuje bezpečnost, výkon i funkčnost webových aplikací.

Základní rozdíly

Vlastnost GET POST
Data v URL Ano (query string) Ne (v těle požadavku)
Viditelnost dat Data viditelná v adresním řádku Data skrytá (ale viditelná ve vývojářských nástrojích)
Záložky Lze uložit do záložek Nelze uložit s daty
Cache Může být cachováno Není cachováno
Historie prohlížeče Zůstává v historii Nezůstává v historii
Idempotence Ano (opakované volání má stejný efekt) Ne

Co je idempotence?

Idempotentní operace je taková, která při opakovaném provedení dává stejný výsledek jako při prvním provedení. Metoda GET je idempotentní – když 10× načtete stejnou stránku, dostanete 10× stejný výsledek a na serveru se nic nezmění.

Metoda POST idempotentní není – když 10× odešlete objednávku, vytvoří se 10 objednávek. Proto prohlížeče zobrazují varování při obnovení stránky s POST požadavkem.

Datové limity

GET

Metoda GET má omezení délky URL, které se liší podle prohlížeče a serveru:

  • Internet Explorer: 2 083 znaků
  • Chrome, Firefox, Safari: přibližně 64 000 znaků
  • Apache: výchozí limit 8 190 znaků (konfigurovatelné pomocí LimitRequestLine)
  • Nginx: výchozí limit 8 KB pro celý požadavek
  • IIS: 16 384 znaků

Doporučení: Pro maximální kompatibilitu nepřekračovat 2 000 znaků v URL.

POST

Metoda POST nemá teoretický limit na straně protokolu HTTP, ale existují praktická omezení:

  • PHP: post_max_size (výchozí 8 MB), upload_max_filesize (výchozí 2 MB)
  • Apache: LimitRequestBody (výchozí neomezeno)
  • Nginx: client_max_body_size (výchozí 1 MB)
  • IIS: maxRequestLength (výchozí 4 MB)

Tyto limity lze na serveru upravit podle potřeby. Při vývoji na lokálním serveru (WAMP, XAMPP) se limity nastavují v souboru php.ini.

Kdy použít GET

Metodu GET použijte pro:

  1. Načítání dat – zobrazení stránky, článku, produktu
  2. Vyhledávání – výsledky vyhledávání by měly být sdílitelné přes URL
  3. Filtrování a řazení – parametry v URL umožní uložit konkrétní pohled
  4. Stránkování – číslo stránky v URL (?page=2)
  5. API požadavky na čtení – RESTful GET endpointy

GET je vhodný tam, kde potřebujete na výsledek odkázat nebo ho sdílet. Vyhledávače mohou stránky s query stringem indexovat, což je někdy nežádoucí (duplicitní obsah). V takovém případě se problém řeší pomocí <link rel="canonical">.

<!-- Vyhledávací formulář – GET je správná volba -->
<form action="/search" method="get">
  <input type="text" name="q" placeholder="Hledat...">
  <button type="submit">Hledat</button>
</form>
<!-- Výsledek: /search?q=dotaz -->

Kdy použít POST

Metodu POST použijte pro:

  1. Odesílání formulářů – registrace, přihlášení, kontaktní formuláře
  2. Nahrávání souborů – GET neumožňuje přenos souborů
  3. Citlivá data – hesla, osobní údaje, platební informace
  4. Operace měnící stav – vytvoření objednávky, odeslání komentáře
  5. Velký objem dat – cokoliv nad 2 000 znaků
<!-- Přihlašovací formulář – POST je bezpečnější -->
<form action="/login" method="post">
  <input type="text" name="username">
  <input type="password" name="password">
  <button type="submit">Přihlásit</button>
</form>

Bezpečnostní aspekty

GET není bezpečný pro citlivá data

  • Data v URL se ukládají do historie prohlížeče
  • URL se může objevit v logu serveru
  • URL může být zachycena v HTTP Referer hlavičce
  • URL může někdo zahlédnout přes rameno

POST není automaticky bezpečný

Samotné použití POST nezajišťuje bezpečnost. Pro skutečné zabezpečení je nutné:

  • Používat HTTPS pro šifrování přenosu
  • Implementovat CSRF ochranu
  • Validovat a sanitisovat vstupní data na serveru

Přehled použití

Situace Metoda Důvod
Zobrazení stránky GET Čtení dat, cachování
Vyhledávání GET Sdílení URL s výsledky
Přihlášení POST Citlivá data (heslo)
Registrace POST Vytvoření záznamu, citlivá data
Upload souboru POST Binární data, velký objem
Odeslání objednávky POST Změna stavu, neopakovat
Filtrování produktů GET Sdílení URL, záložky
Smazání položky POST/DELETE Změna stavu

Další HTTP metody

Kromě GET a POST existují další metody používané zejména v REST API:

  • PUT – aktualizace celého záznamu
  • PATCH – částečná aktualizace záznamu
  • DELETE – smazání záznamu
  • HEAD – jako GET, ale vrací pouze hlavičky
  • OPTIONS – zjištění podporovaných metod

HTML formuláře podporují pouze GET a POST. Pro ostatní metody je nutné použít AJAX nebo skrytý _method parametr.

Co si myslíte o tomto článku?

Diskuse

Související články

Jak udělat input s automatickou šířkou podle obsahu

Několik způsobů, jak dosáhnout toho, aby se textové pole rozšiřovalo a zužovalo podle délky zadaného textu.

9 minut

HTML značka <keygen>

K čemu sloužila HTML značka <keygen>.

7 minut

Odeslání formuláře tlačítkem mimo něj

Jak odeslat formulář tlačítkem, které je mimo formulář.

3 minuty

Resetování <input type=file>

Jak resetovat (odstranit) hodnotu z <input>u pro upload souborů.

3 minuty

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata · Zkratky
2013–2026