HTTP
Z BananWiki
Obsah |
Co to je?
HTTP (Hypertext Transfer Protocol) je internetový protokol určený původně pro výměnu HTML dokumentů. Tento protokol je spolu s elektronickou poštou tím nejvíce používaným a zasloužil se o obrovský rozmach internetu v posledních letech.
Je používán i pro přenos dalších informací. Pomocí rozšíření MIME umí přenášet jakýkoli soubor (podobně jako e-mail), používá se společně s formátem XML pro tzv. webové služby (spouštění vzdálených aplikací) a pomocí aplikačních bran zpřístupňuje i další protokoly, jako je např. FTP nebo SMTP.
HTTP používá tzv. jednotný lokátor prostředků (URL, Uniform Resource Locator), který specifikuje jednoznačné umístění nějakého zdroje v Internetu.
Existuje i bezpečnějsí verze HTTP zvaná HTTPS, která umožňuje šifrovat přenášená data a tak je chránit proti narušení.
Komunikace
Protokol funguje způsobem dotaz-odpověď.
Uživatel pomocí internetového prohlížeče pošle serveru dotaz v textové formě, obsahující označení požadovaného dokumentu, informace o schopnostech prohlížeče apod.
Server poté odpoví pomocí několika řádků textu popisujících výsledek dotazu (zda se dokument podařilo najít, jakého je typu atd.), za kterými následují data samotného požadovaného dokumentu.
Nevýhodou protokolu je, že neumí uchovávat stavy komunikace, dotazy jsou navzájem nezávisle, žádný dotaz nijak nesouvisí s jiným, proto se mu také říká bezstavový protokol. Ovšem pro většinu složitejších procesů přes HTTP je třeba uchovávat určité informace (např. v internetovém obchodě stav košíku nebo jen pouhá registrace) K tomuto účelu byl protokol HTTP rozšířen o tzv. HTTP cookies, které umožňují serveru uchovávat si informace o stavu spojení přímo na počítači uživatele.
Ukázka komuinkace
Klient (webový prohlížeč) se připojí na server cs.wikipedia.org a zašle následující dotaz (zjednodušený příklad):
GET /wiki/Wikipedie HTTP/1.1 Host: cs.wikipedia.org User-Agent: Mozilla/5.0 Gecko/20040803 Firefox/0.9.3 Accept-Charset: UTF-8,*
Žádá o dokument /wiki/Wikipedie na serveru cs.wikipedia.org, podává informaci o své totožnosti (Mozilla Firefox verze 0.9.3) a že podporuje kódování UTF-8.
Odpověď serveru:
HTTP/1.0 200 OK Date: Fri, 15 Oct 2004 08:20:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.8 X-Powered-By: PHP/4.3.8 Vary: Accept-Encoding,Cookie Cache-Control: private, s-maxage=0, max-age=0, must-revalidate Content-Language: cs Content-Type: text/html; charset=utf-8
Tato hlavička hned na prvním řádku odpovídá, že se dotaz podařil ( "200 OK" ), pak následuje datum a čas vyřízení dotazu, popis serveru, informace o dokumentu a následně se připojí požadovaný HTML dokument.
Pár příkladů metod dotazů
GET - požadavek na uvedený objekt se zasláním případných dat (proměnné prohlížeče, session id, …). Výchozí metoda při požadavku na zobrazení hypertextových stránek, RSS feedů aj. Celkově nejpoužívanější.
POST - odesílá uživatelská data na server. Používá se například při odesílání formuláře na webu. S předaným objektem se pak zachází podobně jako při metodě GET. Data může odesílat i metoda GET, metoda POST se ale používá pro příliš velká data (víc než 512 bajtů, což je velikost požadavku GET) nebo pokud není vhodné přenášená data zobrazit jako součást URL (data předávaná metodou POST jsou obsažena v HTTP požadavku).
TRACE - 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í.
CONNECT - spojí se s objektem přes uvedený port. Používá se při průchodu skrze proxy pro ustanovení kanálu SSL