COMPUTERWORLD
 

profil kontakt CD-ROM CW100 p°edplatnΘ

archiv anketa CO VY NA TO? CW kariΘra serißly
 

IDG

IDG CZ homepage
COMPUTERWORLD
PC WORLD
INTERNET4U
MEGABYTE
TESTCENTRUM
ON-LINE






COMPUTERWORLD 19/98

Protokol HTTP ve verzφch 1.0 a 1.1

Ji°φ Kosek ml.

V minulΘm dφlu naÜeho serißlu jsme probφrali zßkladnφ vlastnosti hypertextovΘho p°enosovΘho protokolu a nejstarÜφ verzi 0.9. Podφvejme se nynφ, jak vypadß komunikace klienta a serveru ve verzφch nov∞jÜφch.

HTTP verze 1.0

V tΘto verzi protokolu HTTP je syntaxe po₧adavku klienta ji₧ o n∞co slo₧it∞jÜφ:

metoda cesta_k_dokumentu HTTP/1.0


hlaviΦky


prßzdnß_°ßdka


Nejpou₧φvan∞jÜφ metodou je GET -- ta slou₧φ k zφskßnφ danΘho dokumentu ze serveru. DalÜφ 2 metody, kterΘ m∙₧eme pou₧φt, jsou HEAD a POST. Prvnφ z nich zaÜle pouze hlaviΦky, kterΘ obsahujφ r∙znΘ metainformace o dokumentu -- nap°. datum poslednφ modifikace apod. Metoda POST slou₧φ k odeslßnφ dat z formulß°e na server. V tomto p°φpad∞ za prßzdnou °ßdkou obsahuje po₧adavek jeÜt∞ hodnoty jednotliv²ch polφ formulß°e.

HlaviΦky slou₧φ pro p°enos r∙zn²ch dopl≥ujφcφch informacφ. Ka₧dß hlaviΦka je na samostatnΘ °ßdce a mß tvar jmΘno_hlaviΦky: hodnota. V²znam jednotliv²ch hlaviΦek popφÜeme pozd∞ji. Jejich pou₧itφ je nepovinnΘ a proto nejjednoduÜÜφ po₧adavek v HTTP/1.0 vypadß takto:

GET /~krystof/linky.html HTTP/1.0


prßzdnß_°ßdka


Odpov∞∩ mß v HTTP/1.0 takΘ odliÜn² formßt. Nesestßvß pouze ze samotnΘho obsahu zasφlanΘ strßnky, ale obsahuje i mnoho d∙le₧it²ch a u₧iteΦn²ch informacφ.

HTTP/1.0 stavov²_k≤d stavovΘ_hlßÜenφ


hlaviΦky


prßzdnß_°ßdka


obsah_odpov∞di


Stavov² k≤d je t°φmφstnΘ Φφslo, kterΘ indikuje, jak se povedlo uspokojit po₧adavek. P°ehled stavov²ch k≤d∙ je uveden v tabulce 1.

StavovΘ hlßÜenφ je slovnφ popis stavovΘho k≤du, kter² je pro Φlov∞ka p°ece jen srozumiteln∞jÜφ. Pokud vÜe prob∞hlo v po°ßdku, m∞la by prvnφ °ßdka odpov∞di vypadat nßsledovn∞:

HTTP/1.0 200 OK

Tab. 1: StavovΘ k≤dy a hlßÜenφ HTTP/1.0

K≤dPopis

1xxInformaΦnφ k≤dy (nepou₧φvß se)

2xx┌sp∞ÜnΘ vy°φzenφ po₧adavku

200 OKPo₧adavek byl ·sp∞Ün∞ zpracovßn

201 CreatedV²sledkem po₧adavku je nov∞ vytvo°en² objekt

200 AcceptedPo₧adavek byl p°ijat, ale dosud nenφ zpracovßn

200 No contentPo₧adavek byl ·sp∞Ün∞ zpracovßn, ale jeho v²sledkem nejsou ₧ßdnß data pro klienta

3xxP°esm∞rovßnφ

301 Moved PermanentlyPo₧adovan² objekt byl trvale p°emφst∞n na jinou adresu

302 Moved TemporarilyPo₧adovan² objekt byl doΦasn∞ p°emφst∞n na jinou adresu

304 Not ModifiedObjekt nebyl zm∞n∞n (odpov∞∩ p°i podmφn∞nΘm po₧adavku pomocφ hlaviΦky If-Modified-Since)

4xxChyba klienta

400 Bad Requestèpatnß syntaxe dotazu

401 UnauthorizedObjekt je dostupn² pouze po autorizaci

403 ForbiddenPo₧adavek je v po°ßdku, ale server nemß povoleno jej vykonat

404 Not FoundPo₧adovan² objekt nebyl na serveru nalezen

5xxChyba na stran∞ serveru

500 Internal Server ErrorServeru se n∞co stalo a nem∙₧e vyplnit po₧adavek

501 Not ImplementedServer nepodporuje metodu uvedenou v po₧adavku

502 Bad GatewayServer, pracujφcφ jako gateway, dostal Üpatnou odpov∞∩ od dalÜφho serveru

503 Service UnavailableSlu₧ba je nedostupnß (p°etφ₧enφ, ·dr₧ba serveru)

HTTP verze 1.1

Struktura po₧adavku i odpov∞di z∙stßvß u nejnov∞jÜφ verze HTTP stejnß jako u verze 1.0. P°idßny jsou vÜak novΘ hlaviΦky a n∞kterΘ z nich jsou nynφ i povinnΘ.

P°edchozφ verze protokolu HTTP vytvß°ely pro ka₧d² objekt novΘ spojenφ a potΘ jej pomocφ HTTP p°enesly. Pokud tedy nap°. HTML strßnka obsahovala 4 obrßzky, pro jejφ sta₧enφ bylo pot°eba navßzat 5 spojenφ (1 strßnka + 4 obrßzky). Navßzßnφ spojenφ je vÜak nßroΦnΘ jak na Φas, tak na p°enosovou kapacitu sφt∞. HTTP/1.1 proto spojenφ mezi klientem a serverem po vy°φzenφ po₧adavku neuzavφrß, ale umo₧≥uje jej pou₧φt pro p°enos vφce objekt∙. Tφm dochßzφ k uÜet°enφ Φasu pot°ebnΘho k p°enosu webovsk²ch strßnek. Spojenφ m∙₧e ukonΦit klient nebo server tφm, ₧e do po₧adavku/odpov∞di za°adφ hlaviΦku Connection: close.

V ka₧dΘm po₧adavku, kter² vyhovuje standardu HTTP/1.1, musφme pou₧φt hlaviΦku Host. Jako hodnota se uvßdφ domΘnovΘ jmΘno serveru, ze kterΘho po₧adujeme strßnku. NejjednoduÜÜφ po₧adavek pak vypadß takto

GET /~krystof/linky.html HTTP/1.1

Host: www.server.cz

prßzdnß_°ßdka

Pou₧itφ tΘto hlaviΦky je povinnΘ kv∙li tzv. virtußlnφm server∙m.

Dnes je na Internetu b∞₧nΘ, ₧e poskytovatelΘ p°ipojenφ umo₧≥ujφ na sv²ch serverech vystavovat strßnky sv²m zßkaznφk∙m. Jako slu₧bu nabφzejφ i umφst∞nφ strßnek na adrese typu http://www.firma.cz mφsto obvyklΘho http://www.poskytovatel.cz/firma. Samoz°ejm∞, ₧e poskytovatel na jednom serveru (poΦφtaΦi) vystavuje strßnky n∞kolika firem. ProblΘm je vÜak v tom, ₧e server mß obvykle jen jednu IP adresu, ke kterΘ se p°ipojujφ klienti.

Prohlφ₧eΦ se tedy p°ipojφ k serveru na port 80 a v po₧adavku HTTP/1.0 poÜle pouze cestu k dokumentu. Server nemß Üanci zjistit, z kterΘho virtußlnφho serveru je dokument po₧adovßn. Tato situace se °eÜila p°i°azenφm n∞kolika IP adres jednomu poΦφtaΦi. Pro ka₧d² virtußlnφ server musela existovat jedineΦnß IP adresa. V tomto p°φpad∞ ji₧ server podle IP rozhranφ, ke kterΘmu se prohlφ₧eΦ p°ipojil, mohl urΦit virtußlnφ server, na kter² po₧adavek sm∞°uje.

Toto ne p°φliÜ elegantnφ °eÜenφ zbyteΦn∞ pl²tvalo IP adresami a kladlo zv²ÜenΘ po₧adavky na konfiguraci serveru p°i p°idßnφ novΘho virtußlnφho serveru. Tφm, ₧e po₧adavky HTTP/1.1 obsahujφ jmΘno serveru, odpadß pot°eba z°izovßnφ novΘ IP adresy pro ka₧d² virtußlnφ server. Na jednΘ IP adrese nynφ m∙₧e b²t p°φstupn² neomezen² poΦet virtußlnφch server∙. Jedin²m hßΦkem jist∞ elegantnφho °eÜenφ problΘmu je fakt, ₧e starÜφ prohlφ₧eΦe nepodporujφ tuto novou verzi HTTP.

HTTP/1.1 p°idßvß i n∞kolik nov²ch metod po₧adavk∙. Pro pot°eby pohodlnΘho publikovßnφ na Webu jsou to p°edevÜφm metody PUT a DELETE. Prvnφ z nich slou₧φ k ulo₧enφ zaslanΘho objektu (nejΦast∞ji HTML strßnky) na danΘ URL. HTML editor tak m∙₧e p°φmo na webov² server ulo₧it nov∞ vytvo°enou nebo modifikovanou strßnku, ani₧ by se o to musel sna₧it u₧ivatel sßm nap°φklad pomocφ FTP. Metoda DELETE slou₧φ k odstran∞nφ strßnky ze serveru. DalÜφ metody -- TRACE, CONNECT a OPTIONS -- slou₧φ k zjiÜ¥ovßnφ, analyzovßnφ a nastavenφ zp∙sobu spojenφ.

Nejpou₧φvan∞jÜφ hlaviΦky

Verze protokolu HTTP 1.0 definovala 17 hlaviΦek. HTTP/1.1 tento poΦet jeÜt∞ zv∞tÜil. My si struΦn∞ objasnφme v²znam nejd∙le₧it∞jÜφch hlaviΦek.

Content-Type

Tato hlaviΦka udßvß typ p°enßÜen²ch dat. Typ dat se zapisuje pomocφ MIME konvence. Pro HTML strßnky mßme typ text/html, pro obyΦejn² text text/plain, obrßzky majφ podle pou₧itΘho formßtu jeden z typ∙ image/gif, image/jpeg nebo image/png. Podle typu dat prohlφ₧eΦ poznß, jak p°φchozφ data interpretovat. HTML strßnka, zasφlanß prohlφ₧eΦi jako odpov∞∩, proto mezi hlaviΦkami obsahuje nßsledujφcφ °ßdku

Content-Type: text/html

Location

Tato hlaviΦka obsahuje adresu dokumentu, kter² byl p°esunut. HlaviΦku server posφlß v p°φpadech, kdy stavov² k≤d po₧adovanΘ operace zaΦφnß na 3. Prohlφ₧eΦ v∞tÜinou automaticky nahraje strßnku, na kterou Location ukazuje. Jako adresu je pot°eba uvΘst ·plnΘ absolutnφ URL. Nap°.

Location: http://manes.vse.cz/~xkosj06/index.html

If-Modified-Since

Pokud v po₧adavku pou₧ijeme tuto hlaviΦku spoleΦn∞ s n∞jak²m datem, server nßm po₧adovan² objekt vrßtφ pouze, pokud byl od zadanΘho data zm∞n∞n. ╪ekn∞me, ₧e chceme zφskat dokument pouze za p°edpokladu, ₧e se zm∞nil od 30. b°ezna 1998. Pou₧ijeme hlaviΦku

If-Modified-Since: Mon, 30 Mar 1998 12:00:00 GMT

User-Agent, Server

V hlaviΦce User-Agent posφlß prohlφ₧eΦ svoji identifikaci -- obvykle svΘ jmΘno, Φφslo verze a platformu, na kterΘ je spuÜt∞n. Server naopak obsahuje identifikaci serveru, kter² vy°φdil po₧adavek. P°φklady:

User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)

Server: Apache/1.3b3

 

 

© IDG Czechoslovakia, a.s., VÜechna prßva vyhrazena
info@idg.cz, webmaster@idg.cz