Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

HTTP

  • HyperText Transfer Protocol je základním protokolem pro komunikaci mezi klientem (např. prohlížečem) a serverem.
  • Funguje na 7. vrstvě OSI modelu (aplikační vrstva) a používá se pro přenos dat na webu.
  • Až do 3. verze protokolu se používal pouze TCP protokol pro přenos dat, ale s příchodem HTTP/3 se začal používat protokol QUIC, který je založen na UDP.
  • Je to hlavní protokol používaný pro přenos dat na webu.
  • HTTP funguje na principu požadavku(request) a odpovědi(response).
  • Skládá se ze dvou hlavních částí: hlavičky(header) a těla(body) - to platí jak pro požadavky, tak pro odpovědi.
  • Hlavička(header) zprávy, která obsahuje metadata o požadavku nebo odpovědi, například typ obsahu, délku obsahu, kódování a další informace.
  • Tato část zprávy je psaná v textovém formátu a je oddělena od těla zprávy prázdným řádkem.

první řádek hlavičky

  • První řádek hlavičky obsahuje metodu (např. GET, POST) a URL pro požadavky, nebo stavový kód pro odpovědi.
  • Pokud je to požadavek, první řádek obsahuje metodu, cestu a verzi HTTP.
  • Pokud je to odpověď, první řádek obsahuje verzi HTTP, stavový kód a zprávu.
  • Například:

Klient odešle požadavek:

GET /index.html HTTP/1.1
...

Server odpoví:

HTTP/1.1 200 OK
...

<data>
metody
  • GET: Používá se pro získání dat ze serveru. Je to nejběžnější metoda a dle standardu se její tělo ignoruje. Zároveň by neměla mít žádné vedlejší efekty na serveru, což znamená, že by neměla měnit žádná data na serveru.
  • POST: Používá se pro odesílání dat na server, například při odesílání formulářů. Tato metoda může mít tělo zprávy, které obsahuje data, která se odesílají na server.
  • PUT: Používá se pro aktualizaci nebo vytvoření zdroje na serveru. Tato metoda může mít tělo zprávy, které obsahuje data, která se odesílají na server.
  • DELETE: Používá se pro odstranění zdroje na serveru.
  • HEAD: Používá se pro získání hlavičky odpovědi bez těla zprávy. Je užitečná pro získání informací o zdroji, aniž by bylo nutné stahovat celý obsah.
  • OPTIONS: Používá se pro získání informací o podporovaných metodách a dalších možnostech serveru pro daný zdroj(cestu).

headery

  • Následují další řádky hlavičky, které obsahují klíč-hodnota páry s dalšími informacemi - cookies, typ obsahu, délku obsahu, kódování a další.
  • Tyto řádky jsou ve formátu Klíč: Hodnota a mohou být různé v závislosti na požadavku nebo odpovědi.
  • Používají se pro přenos důležitých informací mezi klientem a serverem, například pro autentizaci, nastavení cookies, určení typu obsahu, jazykové preference a další.
  • Například:

Klient odešle požadavek:

Get /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0

Server odpoví:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 12

Hello World!

body

  • Tělo zprávy, které obsahuje samotný obsah, například HTML, CSS, JavaScript nebo jiná data, ať už textová nebo binární.
  • Objevuje se jak v požadavcích, tak v odpovědích, ale není povinné. Například GET požadavky obvykle nemají tělo zprávy, zatímco POST požadavky často obsahují data v těle zprávy.

HTTPS

  • Bezpečnější verze HTTP, která používá šifrování pro ochranu dat během přenosu. Písmeno S zde znamená “Secure”(zabezpečený).
  • Používá protokol TLS (Transport Layer Security) pro zabezpečení komunikace.
  • Zajišťuje důvěrnost, integritu a autentizaci dat během přenosu.
  • K ověření identity serveru se používají certifikáty, které jsou vydávány důvěryhodnými certifikačními autoritami (CA).

Ukázková HTTP komunikace

  • Navštívíte webovou stránku, například http://www.example.com.

  • Váš prohlížeč odešle HTTP GET požadavek na server www.example.com pro získání obsahu stránky.

  • GET požadavek může vypadat takto:

GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

  • Server zpracuje tento požadavek a vrátí HTTP odpověď, která může vypadat takto:
HTTP/1.1 200 OK
Date: Sun, 01 Mar 2026 12:31:45 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Content-Encoding: gzip
Last-Modified: Wed, 25 Feb 2026 07:22:28 GMT
Allow: GET, HEAD
Age: 7405
cf-cache-status: HIT
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 9d59e5a63d9887f2-PRG

<!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:visited{color:#348}</style></head><body><div><h1>Example Domain</h1><p>This domain is for use in documentation examples without needing permission. Avoid use in operations.</p><p><a href="https://iana.org/domains/example">Learn more</a></p></div></body></html>

Nástroje

  • devtools - nástroje pro vývojáře, které jsou součástí moderních webových prohlížečů a umožňují sledovat a analyzovat HTTP komunikaci mezi klientem a serverem.
  • curl - nástroj pro interakci s nejen webovými servery pomocí různých protokolů, včetně HTTP, a umožňuje odesílat požadavky a zobrazovat odpovědi.
  • burpsuite - komplexní nástroj pro testování bezpečnosti webových aplikací, který umožňuje zachytit, analyzovat a modifikovat HTTP(S) komunikaci mezi klientem a serverem.
  • Wireshark - nástroj pro analýzu síťového provozu, kter, mimo jiné, umožňuje zachytit a analyzovat HTTP komunikaci na nižší úrovni.

Shrnutí

  • HTTP (HyperText Transfer Protocol) je základní komunikační protokol webu.
  • Slouží k výměně dat mezi klientem (např. prohlížečem) a serverem.
  • Funguje na principu request (požadavek) -> response (odpověď).
  • Každá zpráva se skládá z:
    • hlavičky (header) - metadata (typ obsahu, délka, cookies, kódování…)
    • těla (body) - samotná přenášená data (HTML, JSON, obrázky…)
  • Nejčastější metody jsou: GET, POST, PUT, DELETE, HEAD, OPTIONS.
  • Pro bezpečný přenos se používá HTTPS, které šifruje komunikaci pomocí TLS.
  • Moderní verze jako HTTP/3 používá protokol QUIC (nad UDP) pro rychlejší přenos.

Reference