HTTP (skratka Hypertext transfer protocol) je primárna metóda prepravy informácií na world wide webe. Pôvodný účel bol poskytovať prostriedky pre publikáciu a získavanie HTML stránok.
Vývoj HTTP koordinovalo World Wide Web Consortium (W3C) a pracovné skupiny Internet Engineering Task Force (IETF). HTTP je protokol definujúci požiadavky a odpovede medzi klientmi a servermi. HTTP klient (označovaný ako user agent), ako webový prehliadač zvyčajne začne požiadavku nadviazaním TCP spojenia na určenom porte vzdialeného stroja (štandardne port 80). HTTP server počúvajúci na danom porte čaká a plní žiadosti klienta. [1]
GET najbežnejší typ žiadosti, ktorý žiada o zdroj na uvedenej URL adrese
POST tiež žiada o zdroj, ale v tele správy sa vyskytujú dvojice (kľúč a hodnota) z HTML formulára
PUT na danú URI sa na server uploaduje súbor
DELETE opak PUT, ale nie moc používané
HEAD tiež žiada o zdroj, ale nepožaduje telo správy, iba hlavičky, metainformácie o dokumente
TRACE zašle naspäť odosielateľovi kópiu obdržanej požiadavky, takže klient môže zistiť, ako sa požiadavka
zmenila po prechode cez servery
OPTIONS vráti serverom podporujúce metódy HTTP, takto môžeme testovať funkcionalitu
CONNECT nie je moc používané, slúži na spojenie sa s objektom cez uvedený port, používa sa pri prechode
proxy na vytvorenie SSL tunelu
Po ukončení žiadosti sa spojenie so serverom ukončí, čo je na jednej strane ideálne pre odkazovanie na iné stránky cez mnoho serverov. No na druhej strane to nevyhovuje tvorcom webu, pretože to nezabezpečí uchovanie stavu používateľa. Problém čiastočne riešia cookies.
Je to stav spracovania žiadosti serverom. Jedná sa o 3 miestny číselný kód, kde prvá cifra určuje druh stavu:
1xx informačné
2xx vyjadrujúce úspech
3xx presmerovania
4xx chyba na strane klienta
5xx chyba na strane serveru
Hypertext Transfer Protocol Secure je zabezpečená verzia HTTP, komunikačného protokolu World Wide Web. Bol vyvinutý firmou Netscape Communications Corporation pre poskytovanie overenia a šifrovanej komunikácie. Namiesto používania jednoduchej textovej komunikácie, HTTPS šifruje prenos dát použitím SSL (Secure Socket Layer) protokolu alebo TLS (Transport Layer Security) protokolu a tým zaisťuje primeranú ochranu pred odpočúvaním komunikácie a pred útokom ,,Man in the middle". Pre HTTPS komunikáciu sa štandardne používa TCP/IP port 443. [2]
Bezpečnosť HTTPS je závislá na certifikátoch (prípadne ešte aj overených certifikačnou autoritou). Bez podpísaného certifikátu je tento protokol zraniteľný. V praxi sú však často používané nepodpísané certifikáty, čím sa stráca bezpečnosť, ktorú HTTPS ponúka.
je dnes najrozšírenejší HTTP server.
Pôvodný projekt s označením NCSA HTTPd bol vytvorený Robertom McCoolom a vznikol v roku 1993 na Illinoiskej univerzite v NCSA. Po roku došlo k zastaveniu vývoja. Skupina programátorov vydávajúca záplaty, dnešná zastrešujúca organizácia The Apache Software Foundation a taktiež aj rast obľúbenosti zapríčinili jeho vzrast. U verzii 2.0 došlo k značnému prepísaniu zdrojového kódu, modularizácie, lepšia podpora pre neUNIXové platformy nová API a podpora IPv6. Dnes používaná stabilná verzia je 2.2, ktorá má pružnejšiu autorizáciu API a je vybavená cache a proxy modulmi.
Inštalácia je jednoduchá, stačí nainštalovať balíček apache2
. Konfigurácia sa prevádza pomocou súboru
/etc/apache2/apache2.conf
a ďalších súborov, ktoré sú pre prehľadnosť oddelené a doň inkludované.
Moduly sa zavádzajú vytvorením symbolického linku z /etc/apache2/mods-available
do
/etc/apache2/mods-enabled
. Pre beh apachu postačí napísať /etc/init.d/apache2
{start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}
.
Apache server môže v rámci jedného stroja prevádzkovať viacero nezávislých serverov. Toto sa používa hlavne pri webhostingu. Každý virtuálny stroj môže mať svoj konfiguračný súbor, datový priestor nastavenia alebo logy. Virtuálne stroje od seba odlišujeme buď IP adresou alebo doménou.
Príklad odlíšenia virtuálnych mašín doménou:
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.domain.tld ServerAlias domain.tld *.domain.tld DocumentRoot /www/domain </VirtualHost> <VirtualHost *:80> ServerName www.otherdomain.tld DocumentRoot /www/otherdomain </VirtualHost>
Príklad IP virtuálnej mašiny:
NameVirtualHost 111.22.33.44 <VirtualHost 111.22.33.44> ServerName www.domain.tld ServerPath /domain DocumentRoot /web/domain </VirtualHost>[3]
Prepisovacie pravidlá definované pre adresár. Názov súboru je štandartne .htaccess
,
definovaný v /etc/apache2/apache2.conf
riadok AccessFileName .htaccess
.
Vypnutie je možné: AllowOverride None
.
Príklad použitia:
RewriteEngine on RewriteRule !^(documents|photos|pictures|src|upload)/.*$ - [C] RewriteRule ^([^/]*)/([^/]+).*$ src/index.php?dir=$1&file=$2&%{QUERY_STRING} RewriteRule ^([^/]*)/*$ src/index.php?dir=$1&file=$1&%{QUERY_STRING} [L]
zabezpečuje komunikáciu šifrovaním a autentizáciou komunikujúcich strán. Pre použitie SSL
treba zaviesť modul mod_ssl
. SSL certifikáty sú vydávané na meno domény.
Príklad použitia:
<VirtualHost _default_:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/localhost.cert SSLCertificateKeyFile /etc/pki/tls/private/localhost.key </VirtualHost>[4]
Common Gateway Interface (v skratke CGI) je tiež protokol pre prepojenie externých
aplikacií s webovým serverom. Pre použitie CGI treba zaviesť modul mod_cgi
.
CGI skripty je možné umiestniť samostatne pomocou: ScriptAlias /cgi-bin/
"/usr/local/apache2/cgi-bin/"
, alebo povoliť spustenie skriptu pomocou prípony:
<Directory /home/*/public_html> Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex index.html index.cgi </Directory>[5]