klient se spojí se serverem (přes TCP či TLS/SSL) a aplikují se Vstupní filtry
server dostane adresu (kam klient chce přistoupit, např. ”/” nebo “/book/15”) a přeloží URI na konkrétní soubor v souborovém systému
zkontroluje přístup (může se se mnou klient bavit?)
Autentizace uživatele
kontrola práv pro přístup uživatele (Autorizace )
kontrola přístupu založená na jiných kritériích (podle IP adresy - IP whitelist např.)
zjištění MIME type souboru v dotazu a výběr handleru , který ho zpracuje
Apache handler vybere podle direktiv v daném umístění souboru, podle hlaviček (Content-Type, …), podle koncovky souboru
server pak může vybrat správnou jazykovou mutaci stránek (kterou má klient preferovanou) - viz Dojednávání obsahu v Apache httpd
fixups - co se doposud nestihlo udělat
spuštění handleru a generování výstupu - tohle je reálné vyřízení požadavku příslušným handlerem
aplikování Výstupní filtry
zaslání požadovaných dat klientovi (s příslušnými hlavičkami)
zalogování přístupu (požadavku a výsledku)
flowchart LR
A[Přijetí požadavku] --> B([Předběžné zpracování])
B --> C([...])
C --> D[Generování obsahu]
D --> E([Logování])
E --> F[ZPRACOVÁNÍ]
VF([Vstupní filtry]) -->|DATA nahoru| D
D -->|DATA dolů| VYF([Výstupní filtry])
Handlery
když chci specifikovat custom chování pro různé požadavky/obsah (jakým způsobem bude požadavek zpracován a jak bude vygenerován obsah)
je to mechanismus nebo funkce, která zpracuje tělo požadavku
např.
core handler v Apache - zpracovává statické soubory
zpracování dynamického obsahu (PHP Handlery) - mod_php
externí CGI skript - viz CGI
přesměrování na speciální moduly
AddHandler cgi-script .cgi v Konfigurace Apache httpd nám řekne, že .cgi soubory bude zpracovávat CGI handler
SetHandler přiřadí handler pro celý kontext (kontejner)
Actions - triggery, když se objeví zadaný MIME type , tak ho předej konkrétnímu skriptu, který tento požadavek vyřídí (taky je to handler)
lze načítat moduly (které mají nějakou funkcionalitu a také mohou registrovat svoje handlery)
Filtry
umí zpracovávat data před i po zpracování (např. kontrola, komprese, úprava hlaviček apod.)
je to takový řetězec filtrů, kterým data protékají
Vstupní filtry
zpracovávají příchozí požadavek (včetně vstupu metody POST), mění se a kontrolují se data DŘÍVE než se předají handleru
např. úprava chunked zprávy do kontinuálního proudu, dekódování obsahu, kontrola škodlivého obsahu
direktiva SetInputFilter mění nastavení
Výstupní filtry
aplikují se na odpověď z handleru před tím, než se odpověď pošle klientovi
např. komprimování obsahu, aby byl datový objem menší
chunked encoding (posílá obsah po částech)
upravuje hlavičky (např. na CORS, security hlavičky)
Server Side Includes
direktiva SetOutputFilter