====== HTTP protokoly a hlavičky ====== **HTTP** je aplikační protokol pro přenos hypermediálních dokumentů. Klient (obvykle prohlížeč) pošle **požadavek** (Request) a server vrátí **odpověď** (Response), která obsahuje stavový kód a data. ===== 1. Evoluce HTTP protokolů ===== Technologie se neustále vyvíjí s cílem snížit latenci (odezvu) a zvýšit rychlost načítání stránek. * **HTTP/1.1 (1997):** Standard, který zavedl trvalá spojení (Keep-Alive). Problémem je, že může stahovat jen jeden soubor po druhém v rámci jednoho spojení (Head-of-line blocking). * **HTTP/2 (2015):** Zásadní zrychlení. Podporuje **multiplexování** (více souborů v jednom spojení najednou), kompresi hlaviček a Server Push. * **HTTP/3 (2022):** Běží na protokolu **QUIC** (přes UDP místo TCP). Eliminuje zpoždění při navazování spojení a lépe zvládá přechody mezi sítěmi (např. z Wi-Fi na 5G). --- ===== 2. Struktura HTTP zprávy ===== Každá HTTP zpráva (dotaz i odpověď) má tři části: 1. **Start line:** U dotazu obsahuje metodu (GET/POST) a URL, u odpovědi stavový kód. 2. **Hlavičky (Headers):** Metadata o spojení a datech. 3. **Tělo (Body):** Samotná data (HTML kód, obrázek, JSON). --- ===== 3. Klíčové HTTP hlavičky ===== Hlavičky se píší ve formátu `Klíč: Hodnota`. ==== Hlavičky dotazu (Request Headers) ==== * **Host:** Doména serveru (např. `it-encyklopedie.cz`). * **User-Agent:** Identifikace prohlížeče a operačního systému klienta. * **Accept:** Jaké typy souborů prohlížeč upřednostňuje (např. `text/html`). * **Authorization:** Přihlašovací údaje (např. Bearer token). ==== Hlavičky odpovědi (Response Headers) ==== * **Content-Type:** Typ vracených dat (např. `text/html; charset=UTF-8`). * **Cache-Control:** Instrukce, jak dlouho má prohlížeč soubor ukládat do mezipaměti. * **Set-Cookie:** Server posílá klientovi cookie pro udržení relace (session). * **Server:** Informace o webovém serveru (např. `nginx/1.25`). --- ===== 4. Stavové kódy (Status Codes) ===== Server v první řádce odpovědi posílá číselný kód, který indikuje výsledek operace: * **2xx (Success):** Vše proběhlo v pořádku. Nejslavnější je **200 OK**. * **3xx (Redirection):** Dokument se přesunul. **301 Moved Permanently** je důležité pro SEO. * **4xx (Client Error):** Chyba je na straně uživatele. **404 Not Found** (stránka neexistuje) nebo **403 Forbidden**. * **5xx (Server Error):** Chyba je na straně serveru. **500 Internal Server Error** nebo **503 Service Unavailable**. --- ===== 5. Bezpečnost: HTTPS ===== **HTTPS** je šifrovaná varianta HTTP. Používá protokol **TLS** (Transport Layer Security) k šifrování hlaviček i těla zprávy. * Zajišťuje **Důvěrnost** (nikdo nemůže odposlouchávat data). * Zajišťuje **Integritu** (data nelze cestou změnit). * Zajišťuje **Autentizaci** (máte jistotu, že komunikujete se správným serverem díky certifikátu). ---- //Související články:// * [[it:net:osi_model|Model OSI a síťové vrstvy]] * [[it:net:dns|Jak funguje DNS]] * [[it:sw:html_meta|HTML a meta tagy kódování]] //Tagy: {{tag>network http https protocol web-dev server browser}}//