HTTP (HyperText Transfer Protocol) je sieťový protokol fungujúci na aplikačnej vrstve ISO/OSI modelu.
Je základným stavebným kameňom webu (WWW) ako ho poznáme.
Základnou charakteristikou tohto protokolu je
bezstavovosť a využívanie modelu klient-server. Klient teda odosiela požiadavky, na ktoré server odpovedá.
Typ vykonanej akcie na strane servera je zvolený na základe prijatej požiadavky (metódy).
Typy metód HTTP požiadaviek:
Najpoužívanejším webovým serverom s otvoreným zdrojovým kódom (Apache License) v súčasnosti je práve Apache, aktuálne vo verzii 2.4.23.
Vyznačuje sa robustnosťou, bezpečnosťou a širokými možnosťami rozšírenia pomocou modulov.
Hlavným konfiguračným súborom Apache servera je httpd.conf. V ňom je možné nastaviť základnú konfiguráciu webového servera,
ako napr. rozhrania a porty na ktorých má server počúvať (Listen), domovský adresár pre poskytovaný obsah (DocumentRoot) vrátane
úpravy prístupových práv k jednotlivým častiam uloženého obsahu a pod. Tento súbor tiež obsahuje direktívy pre zahrnutie
ďalších konfiguračných súborov, uložených zväčša v zložkách conf.d a conf.modules.d.
conf.d obsahuje ďalšie konfiguračné súbory pre rozšírené možnosti nastavenia správania servera, ako napr. možnosť povolenia používateľských
verejných zložiek v ich domovských adresároch, či nastavenie predvoleného zobrazovaného dokumentu v prípade absencie stránky index.*
Zložka conf.modules.d. obsahuje súbory so zoznamom modulov, ktoré majú byť načítané.
Ako bolo spomenuté vyššie, Apache HTTP Server sa vyznačuje svojou modularitou vďaka podpore modulov rozširujúcich jeho funkcionalitu.
Niektoré moduly sú štandardne dostupné priamo v základnej inštalácii, ďalšie sa dajú jednoducho doinštalovať.
Príkladom môže byť modul mod_ssl poskytujúci podporu SSL/TLS, mod_http2 pridávajúci podporu štandardu HTTP/2, či mod_cgi pridávajúci podporu CGI skriptov.
Virtuálne servery (virtual hosts) predstavujú spôsob, ako na jednom fyzickom serveri prevádzkovať viacero webových sídiel.
Tie sú rozlišované buď na základe IP adresy, alebo domény. Takto je možné priradiť rôznym doménam rôzny obsah na tom istom serveri.
Príklad name-based: https://httpd.apache.org/docs/2.4/vhosts/name-based.html
Príklad IP-based: https://httpd.apache.org/docs/2.4/vhosts/ip-based.html
Common Gateway Interface slúži na dynamické generovanie obsahu webových stránok pomocou skriptov spúšťaných na strane servera.
Pri navigácii na zdroj tohto typu server namiesto statického odoslania daného dokumentu klientovi takýto súbor spustí a klientovi odošle vygenerovaný výstup.
CGI skripty sú identifikované buď podľa ich umiestnenia v ceste definovanej pomocou premennej ScriptAlias, prípadne podľa ich prípony v mene súboru.
V tomto prípade zodpovedajúce nastavenie nájdeme pod položkou AddHandler.
Apache HTTP Server je síce najpoužívanejším, avšak nie jediným HTTP serverom používaným na platformách *NIX.
Príklady ďalších používaných HTTP serverov na tejto platforme:
Predstavuje najjednoduchší spôsob autentifikácie pomocou mena a hesla za použitia štandardných HTTP hlavičiek (pole Authorization v HTTP požiadavke).
Tento spôsob neposkytuje žiadnu formu ochrany takto prenášaných údajov, keďže zadané autentifikačné údaje sú pred odoslaním iba zakódované pomocou Base64.
Webový prehliadač si po prijatí autentifikačných údajov touto formou uloží na nejakú dobu do cache, čím sa zabráni vyžadovaniu týchto údajov pri každej požiadavke od klienta.
Tým tiež vzniká problém odhlásenia používateľa pred vypršaním tejto doby. Jedným z riešení je odosielať návratový kód 401 - Unauthorized po kliknutí na tlačidlo určené na odhlásenie.
Pri použití súborov cookies je možné lepšie spravovať autentizovanú reláciu servera s klientom. Po prijatí požiadavky od klienta na prihlásenie je mu v odpovedi zaslaná cookie, ktorá sa uloží na serveri asociovaná z daným používateľom a zároveň sa odošle v odpovedi na takúto požiadavku a tým sa uloží u klienta. Pri následujúcich požiadavkách klient spolu s požiadavkou odošle uloženú autentifikačnú cookie, ktorú server porovná s cookie uloženou v databáze a pri zhode povolí klientovi prístup. Pre odhlásenie tak stačí vymazať príslušnú cookie.
Range requests predstavujú typ požiadavky pre získanie určitej časti zdroja. Pri odosielaní požiadavky sa špecifikuje časť zdroja, ktorá má byť klientovi poskytnutá. Príklad:
HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Range: bytes 21010-47021/47022
Content-Length: 26012
Content-Type: image/gif