Služba World Wide Web Cílem této kapitoly je seznámit čtenáře se základní službou Internetu – službou www a technologiemi, na kterých je tato služba založena. Po prostudování kapitoly by měl čtenář rozumět mechanismu výměny dat mezi www serverem a www klientem, znát princip a použití protokolu http, rozumět jeho struktuře a významu. Čtenáře by kapitola měla dále seznámit s metodou jednoznačné identifikace zdroje na internetu url a vysvětlit souvislost služby www s technologiemi, používanými pro tvorbu webových stránek (např. html). Klíčové pojmy: www, http, url, html, standard mime, webový server, webový klient
Služba www – (World Wide Web ‐ celosvětová pavučina) Jednou ze služeb, které se nejvíce podílely na rozvoji Internetu je bezpochyby služba www. Vznikla již v roce 1989 v Cernu s cílem vytvořit mechanismus pro sdílení a zveřejňování informací týkajících se výzkumných projektů. Její využití ale výrazně překročilo akademickou oblast a stalo se základním kamenem, na kterém je dnešní Internet vystavěn. Princip jejího fungování je založen na principu dotaz – odpověď. Funkci klienta, vznášejícího dotazy, zastává webový prohlížeč (browser), webový server přijímá a vyřizuje požadavky klientů, případně informuje o vzniklých chybách. Služba www je založena na třech základních technologiích: 1. HTTP – hypertext transfer protocol protokol pro komunikaci mezi klientem a serverem 2. URL – uniform resource locator slouží k přesné specifikaci umístění zdroje informací 3. HTML – hypertext markup language značkovací jazyk používaný pro tvorbu a formátování požadovaných dokumentů (webových stránek) – více informací o HTML v modulu Grafika a webdesign
1. HTTP HTTP je komunikační protokol, fungující na aplikační vrstvě architektury TCP/IP. Definuje tvar dat, která jsou přenášena, a pravidla dotazů a odpovědí komunikujících stran. Obvykle je spouštěn na portu 80. HTTP byl původně (verze 0.9) určen pro výměnu textových a hypertextových dokumentů ve formátu HTML. 11/6/2010
www
1
Klient sám musel podle přípony odhadovat, o jaký typ dokumentu se jedná. S rozvojem Internetu přibyly další formáty přenášených souborů, což se muselo odrazit i v protokolu HTTP. Dnes dokáže protokol HTTP přenášet soubory prakticky libovolného formátu, a to textové i binární. Bylo zapotřebí protokol doplnit o možnost rozeznání přenášeného formátu dat, velikosti přenášeného souboru, zjištění poslední aktualizace dokumentu apod. Ve vezi 1.0 byl protokol http rozšířen o hlavičky standardu MIME, specifikující formát přenášených dat. Další přenášené hlavičky obsahují pomocné informace či parametry předávané mezi klientem a serverem. Poslední verze protokolu, verze 1.1 umožňuje udržovat TCP spojení (tzv. keep‐alive connection) a zpracovat více požadavků po sobě v jednom spojení. Přidává i některé další metody, umožňuje používat virtuální servery a zavádí tzv. vyjednávání o obsahu, kdy se snaží vrátit dokument, nejlépe vyhovující požadavkům klienta.
Princip práce protokolu HTTP 1. Klient (webový prohlížeč) vznese dotaz ve formě textu, obsahujícího označení požadovaného dokumentu, informace o schopnostech prohlížeče apod. Pro specifikaci zdroje požadovaného dokumentu používá HTTP jednoznačný lokátor zdrojů URL. Úplný dotaz specifikuje metodu, absolutní nebo relativní cestu k souboru, verzi a hlavičky. V některých případech po hlavičkách následuje tělo dotazu. metoda URLdokumentu verzeHTTP hlavičky tělo_požadavku
2. Server provede kontrolu, zda je požadavek oprávněný, v případě, že jde o dokument chráněný heslem, požádá o autentizaci. Poté nalezne požadovaný dokument, provede jeho kontrolu a sestaví odpověď. Formát odpovědi obsahuje verzi protokolu, stavový kód odpovědi (úspěch, případně typ chyby) a stavové hlášení odpovědi ve formě textu. Následují hlavičky a vlastní tělo odpovědi. Po provedení požadavku zapíše do log souboru vyřízený požadavek. 3. Server poté uzavře spojení, případně (verze 1.1) chvíli vyčkává na další dotazy. Klient může pokračovat v dotazování nebo spojení sám ukončit.
11/6/2010
www
2
Metody protokolu HTTP Metoda určuje druh požadované služby, uvádí se vžy velkými písmeny. Konkrétní server nemusí podporovat všechny metody, pokud daný server požadovanou metodu dotazu nepodporuje, upozorní na to klienta chybovým hlášením. • GET Žádost o odeslání stránky dle specifikovaného URL, dat z formuláře apod. Touto metodou lze ze serveru odeslat jakýkoliv dokument, včetně např. obrázku. Metoda umožňuje zjistit jak je dokument starý, zda byl modifikován apod. Př.: GET /index.html HTTP/1.0 Accept: text/html Accept: image/gif
•
POST Standartní metoda pro odesílání dat od uživatele na server, např. pro odesílání dat z webového formuláře ke zpracování nebo uložení, upload souboru, odeslání emailu, apod (záleží na specifikaci URL). Posílaná data nejsou nijak omezena. Pro odeslání dat na server lze použít i metodu GET, metoda POST se používá zejména pokud jsou data větší než 512B nebo pokud nechceme přenášená data zobrazit jako součást URL. Př.: POST /path/script.cgi HTTP/1.0 From:
[email protected] User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32 home=Cosby&favorite+flavor=flies
•
•
Podrobněji o použití metod GET a POST při odesílání formulářů např. na: http://latrine.dgx.cz/jak‐na‐formulare‐post‐a‐get HEAD Zaslání hlaviček odpovědi, metoda je podobná metodě GET, ale neodesílá vlastní tělo odpovědi. Používá se k testování dostupnosti hypertextových dokumetnů či k získání doplňkových informací o dokumentu (tzv. metadata, např. velikost, poslední modifikace, typ...). PUT Zřídka používaná metoda pro nahrání dat (uložení souboru) na dané URL. Metoda předpokládá, že uložení dat provede přímo server. Data jsou posléze
11/6/2010
www
3
•
•
dostupná, např. metodou GET. Častěji se pro nahrávání dat používá protokol FTP nebo SCP/SSH. DELETE Smaže daný objekt ze serveru. Pro smazání dat je zapotřebí mít oprávnění, podobně jako u metody PUT. TRACE Metoda používaná pro sledování cesty dotazu. Používá se pro testovací a diagnostické údaje. Odpověď na tuto metodu nesmí být ukládána do cache. Metoda odešle kopii obdrženého požadavku zpět odesílateli, takže klient může zjistit, co na požadavku mění nebo přidávají servery, kterými požadavek prochází. Př.: TRACE / HTTP/1.1 Host: www.root.cz HTTP/1.0 200 OK Date: Mon, 05 Feb 2001 10:34:04 GMT Server: Apache/1.3.12 (Unix) Content-Type: message/http X-Cache: MISS from proxy.firma.cz Connection: close TRACE / HTTP/1.0 Cache-Control: max-age=259200 Connection: keep-alive Host: www.root.cz Via: 1.1 proxy.firma.cz:3128 (Squid/2.3.STABLE1) X-Forwarded-For: 172.20.0.111
•
•
CONNECT Specifikuje port, přes který se má klient s uvedeným objektem spojit. Používá se při průchodu proxy. OPTIONS Požadavek na informace o možnostech komunikace na zadaném URL. Klient tímto požadavkem zjišťuje,jaké dotazy daný server podporuje, jaké dotazy může na daný kontext nebo daný server zaslat. Př.: OPTIONS * HTTP/1.1 Host: www.root.cz HTTP/1.1 200 OK Date: Mon, 05 Feb 2001 10:13:52 GMT Server: Apache/1.3.12 (Unix) Vary: Accept-Charset,Accept-Language
11/6/2010
www
4
Allow: GET, HEAD, OPTIONS, TRACE Transfer-Encoding: chunked Content-Type: text/plain
Pěkné příklady fungování jednotlivých metod můžete najít na: http://www.cs.vsb.cz/grygarek/PS/kotasek/htp05.htm
Hlavičky protokolu HTTP Hlavičky HTTP jsou definovány standardem MIME, jejich obecná struktura je následující: název hlavičky: hodnota[;parametr=hodnota].
Parametry jsou nepovinné a vyskytují se jen u některých hlaviček. Každá hlavička by měla začínat na novém řádku. Př.:. Content-type: text/html; charset=ISO-8859-1
HTTP 1.0 definuje 16 různých hlaviček, nicméně žádná z nich není vyžadována. Protokol HTTP 1.1 zavádí 46 hlaviček, z nichž 1 (Host:) je ve struktuře dotazu povinná. Většina hlaviček je při zpracování CGI rozhraním převedena na proměnnou, kterou můžeme dále zpracovávat. Např. hlavička User-Agent bude převedena na proměnnou $HTTP_USER_AGENT.
Nejdůležitější hlavičky: • • •
•
Date datum a čas požadavku/odpovědi Content‐Type druh zasílaných dat Host doménová adresa serveru – umožňuje správnou funkci více virtuálních serverů na jedné společné adrese Location přesměrování na jinou stránku
Některé hlavičky dotazů: •
Accept seznam MIME typů, kterým klient rozumí
11/6/2010
www
5
• • • •
Accept‐Charset preferovaný znakové sady Accept‐Encoding preferované kódování Accept‐Language preferované jazyky User‐Agent identifikace klienta
Některé hlavičky odpovědí: • Content‐Type MIME typ zasílaných dat, např. image/png • Content‐Encoding kódování zasílaných dat • Content‐Length délka dat • Expires platnost dat • Server identifikace serveru Kompletní seznam používaných hlaviček můžete najít např. zde: http://www.cs.vsb.cz/grygarek/PS/kotasek/htp02.htm#24
Stavová hlášení odpovědi Stavové kódy odpovědí serveru se dají rozdělit do několika kategorií: Kategorie Informativní Úspěch Přesměrování
Kód 100‐199 200‐299 300‐399
Chyba na straně klienta Chyba na straně serveru
400‐499 500‐599
Popis Zprávy konkrétní aplikace Požadavek úspěšně zpracován Klient musí pro dokončení požadavku vykonat ještě nějakou činnost (přejít na jinou stránku) Problémy na straně klienta Problémy na straně serveru
11/6/2010
www
6
Kromě stavového kódu je součástí odpovědi na dotaz i textový řetězec (stavové hlášení), který obsahuje doplňující informace. Př.: 404 Not found 503 Service Unavailable
Server nenašel zadanou URL adresu Server nemůže uskutečnit požadavek (např. probíhá údržba či je server dočasně přetížen)
Omezení protokolu HTTP Protokol HTTP je bezestavový protokol, z hlediska serveru nelze rozlišit, zda následující dotaz jakkoli souvisí s dotazem předchozím, protokol neuchovává stav komunikace ani identifikace klienta. Tato vlastnost činí obtíže při implementaci složitějších aplikacích, vyžadujících uchování informací o identitě klienta (např. elektronický obchod). Proto byl HTTP protokol doplněn o systém, umožňující serveru uchovat na počítači klienta informace o stavu spojení. Tento systém se nazývá HTTP cookies.
HTTP cookies Cookie (koláček) je malé množství dat, odeslané www serverem ve formě HTTP hlavičky. Webový prohlížeč tato přijatá data uloží na klientském počítači a při každém dalším požadavku na tentýž server posílá opět ve formě HTTP hlavičky zpět na server. Tato data pak slouží k identifikaci daného uživatele (např. se do cookie může uložit obsah nákupního košíku uživatele, zadané uživatelské předvolby apod.). Cookies se na straně klienta ukládají jako krátké textové soubory. Soubory jsou jedinečně přiřazeny k profilu klienta a může je číst pouze hostitelská doména, která soubor cookie vydává. Cookies nejsou podporovány všemi zařízeními a jejich používání může uživatel vypnout. HTTP hlavičky pro používání cookies jsou dvě: Set-Cookie a Cookie. Hlavička SetCookie je poslána v odpovědi serveru a obsahuje: • • • •
identifikátor cookie data cookie dobu platnosti cookie (expiraci) doménu a adresář na serveru, platné pro danou cookie
S každým dotazem na server, ke kterému existuje v prohlížeči cookie, pak prohlížeč posílá HTTP hlavičku Cookie, která obsahuje stejná data, jaká server původně
11/6/2010
www
7
poslal. Tím se zvyšuje objem dat, posílaných mezi klientem a serverem i když tato data nejsou v dané chvíli potřeba. Cookies se mohou vyskytovat ve dvou variantách: • session cookies (cookies relace) • persistent cookies (trvalé cookies) Session cookies Tyto cookies nemají zadaný čas expirace a existují pouze po dobu trvání spojení. Jakmile uživatel zavře okno prohlížeče, cookies vztahující se k tomuto oknu zaniknou. Konkrétní implementace session cookies (např. chování při otevření nového okna pomocí CTRL+N) závisí na konkrétním prohlížeči. Persistent cookies Trvalé cookies zůstávají uloženy na pevném disku počítače i po ukončení činnosti prohlížeče či vypnutí počítače. Doba jejich uložení na pevném disku je dána nastavením parametru doby expirace. Mohou sloužit k uložení uživatelského nastavení pro daný server nebo např. pro uložení přihlašovacího jména a hesla uživatele. Soubory cookie lze vytvořit pomocí skriptu na straně klienta (např. JavaScript, Jscript) nebo pomocí skriptu na straně serveru (například skriptu Visual Basic, PHP, ASP). Rizika cookies Je třeba zejména zdůraznit, že soubory cookies nelze použít ke spouštění programů či k nahrání virů do počítače. Nicméně existují jistá rizika, spojená s jejich používáním. Jde zejména o riziko ohrožení soukromí uživatele, pomocí cookies se dá sledovat, jaké stránky uživatel vyhledává, případně o jaké produkty má zájem. Tyto informace jsou zajímavé pro internet marketing, tedy reklamní firmy či vyhledavače, které klienta mohou začít obtěžovat nevyžádanou poštou či nevyžádanými odkazy při vyhledávání. Kromě klasických cookies existují ještě cookies flashové, jejichž ukládání nemá na starosti prohlížeč, ale Flash Player. Proto ani vypnutí ukládání cookies v prohlížeči nezabrání ukládání flashových cookies. Navíc tyto cookies nejsou omezeny velikostí jako klasické cookies. O rizicích spojených s flash cookies si můžete více přečíst např. zde: http://www.zive.cz/clanky/flash‐pry‐skryva‐nebezpeci‐rika‐se‐mu‐flash‐cookies/sc‐ 3‐a‐153412/default.aspx
11/6/2010
www
8
2. URL Další důležitou technologií, na které je princip www stránek založen je jednoznačné určení zdroje ‐ URL. Jde o standardizovaný způsob, jak jednoznačně specifikovat přesné umístění zdrojů informací (dokumentů, služeb, souborů) na internetu. V podstatě se jedná o řetězec znaků s pevně definovanou syntaxí a sémanitkou. URL definuje doménovou adresu serveru, umístění zdroje na serveru a protokol, kterým je možné zdroj zpřístupnit. Syntaxe URL: protokol doména [port] umístěníSouboru [parametry]
Př.: http://www.sspbrno.cz/moodle/course/category.php?id=3 http:// www.sspbrno.cz /moodle/course/category.php ?id=3
protokol doména cesta k souboru parametry
Podrobnou specifikaci URL najdete v RFC 1783, např. zde: http://tools.ietf.org/html/rfc1738 Shrnutí: Služba world wide web je jednou z nejvíce využívaných služeb dnešního internetu. Poskytuje uživateli možnost procházet pomocí odkazů i další relevantní stránky, o jejichž existenci původně nemusel vůbec vědět a tím mnohonásobně rozšiřuje možnosti vyhledávání jakýchkoli informací. Myšlenka hypertextového propojení stránek pomocí odkazů vznikla již v 60. letech 20. století a samotný princip www pak v 90. letech 20. století. Princip fungování služby www je založen na metodě dotaz – odpověď, kdy dotazem je požadavek klienta na zpřístupnění určité informace, nacházející se na webové stránce, odpovědí je zaslání požadované stránky prohlížeči klienta příslušným webovým serverem. Služba www je založena na třech technologiích, a to na: • jazyce HTML, který umožňuje vytvořit zdrojový kód webových stránek, • URL ‐ standardizovaném způsobu určení umístění požadovaných informací a • HTTP – protokolu, který požadované informace zpřístupní klientovi (webovému prohlížeči), který o ně požádal Protokol HTTP neumožňuje evidovat informace o předchozích požadavcích klienta a uchovat informace důležité pro identifikaci klienta. Z toho důvodu bývá v případě, že je to potřeba, protokol HTTP rozšířen o tzv. HTTP cookies, které
11/6/2010
www
9
umožňují na počítači klienta uložit informace o daném spojení a tím zachovat kontinuitu mezi jednotlivými souvisejícími požadavky. Používání cookies může být spojeno s potenciálními riziky, zejména s rizikem ohrožení soukromí uživatele. Uživatel má možnost používání cookies na svém počítači omezit či úplně zakázat, tím může ale dojít k omezení funkčnosti zobrazovaných webových stránek. Cookies nepředstavují žádné riziko zavlečení virů či jiných škodlivých programů do počítače. Použité zdroje informací: http://cs.wikipedia.org/ http://www.kosek.cz/ http://www.fi.muni.cz http://www.cs.vsb.cz/ http://www.root.cz/ http://www.jmarshall.com/ http://www.aspnet.cz/ http://www.kai.tul.cz http://www.allaboutcookies.org/ http://www.bestpage.cz/ http://www.zive.cz/ http://www.earchiv.cz/l207/nahled.php3?l=10&me=1
11/6/2010
www
10