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.
header
- 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íč: Hodnotaa 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.compro 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.