Mezi metody požadavku HTTP patří: Jednoduše řečeno o HTTP. Podívejme se na metody HTTP podrobněji

Jazyk atd. Klient a server si mohou vyměňovat binární data díky možnosti určit, jak je zpráva zakódována. tento protokol je text.

Výhody

Jednoduchost

Implementace protokolu je tak jednoduchá, že usnadňuje vytváření klientských aplikací.

Rozšiřitelnost

Možnosti protokolu můžete snadno rozšířit zavedením vlastního vlastní tituly při zachování kompatibility s ostatními klienty a servery. Budou ignorovat pro ně neznámé hlavičky, ale zároveň můžete získat funkcionalitu, kterou potřebujete při řešení konkrétního problému.

Prevalence

Při výběru protokolu HTTP pro řešení konkrétní úkoly Důležitým faktorem je jeho prevalence. Výsledkem je množství různé dokumentace k protokolu v mnoha jazycích světa, zahrnutí snadno použitelných vývojových nástrojů do populárních IDE, podpora protokolu jako klienta v mnoha programech, a široký výběr mezi hostingovými společnostmi se servery HTTP.

Nevýhody a problémy

Velká velikost zprávy

Používání textový formát v protokolu způsobuje odpovídající nevýhodu: velká velikost zprávy versus přenos binárních dat. Z tohoto důvodu se zvyšuje zatížení zařízení při generování, zpracování a přenosu zpráv. K vyřešení tohoto problému protokol obsahuje vestavěné prostředky pro ukládání do mezipaměti na straně klienta a také prostředky pro kompresi přenášeného obsahu. Regulační dokumenty pro protokol zajišťují přítomnost proxy serverů, které klientovi umožňují přijímat dokument ze serveru, který je mu nejblíže. Také bylo do protokolu zavedeno delta kódování, aby se klientovi nepřenášel celý dokument, ale pouze jeho upravená část.

Chybí "navigace"

Přestože byl protokol navržen jako prostředek pro práci se serverovými prostředky, neposkytuje explicitně prostředek pro navigaci mezi těmito prostředky. Klient si například nemůže výslovně vyžádat seznam dostupné soubory, jako v . Předpokládalo se, že koncový uživatel již hypertextové odkazy zná. To je pro člověka docela normální a pohodlné, ale je to obtížné, když existují úkoly automatické zpracování a analýzu všech serverových zdrojů bez lidského zásahu. Řešení tohoto problému leží zcela na bedrech vývojářů aplikací používajících tento protokol.

Žádná podpora distribuce

Protokol HTTP byl vyvinut pro řešení typických každodenních problémů, kdy by samotná doba zpracování požadavku měla zabrat málo času nebo by neměla být brána v úvahu vůbec. Ale v průmyslové využití pomocí distribuovaného počítání vysoké zátěže Protokol HTTP se na serveru ukazuje jako bezmocný. V roce 1998 W3C navrhlo alternativní protokol HTTP-NG(Angličtina) HTTP další generace) Pro kompletní výměna zastaralé se zaměřením na tuto oblast. Myšlenku jeho nezbytnosti podpořili hlavní specialisté na distribuované výpočty, ale tento protokol je stále ve fázi vývoje.

Software

Vše software pro práci s protokolem HTTP se dělí do tří velkých kategorií:

  • servery jako hlavní poskytovatelé služeb ukládání a zpracování informací (zpracování požadavků).
  • klienti- koncoví spotřebitelé serverových služeb (zaslání požadavku).
  • Proxy k provádění dopravních služeb.

K rozlišení koncových serverů od proxy používá oficiální dokumentace tento termín původní server(Angličtina) Původní server). Samozřejmě to samé softwarový produkt může současně vykonávat funkce klienta, serveru nebo zprostředkovatele v závislosti na přidělených úkolech. Specifikace protokolu HTTP podrobně popisuje chování každé z těchto rolí.

klienti

Protokol HTTP byl původně vyvinut pro přístup hypertextové dokumenty World Wide Web. Proto jsou hlavní klientské implementace prohlížeče(uživatelští agenti). Populární prohlížeče(v abecedním pořadí): Chrome, Internet Explorer, Mozilla Firefox, Safari.

Viz také: Seznam prohlížečů a porovnání prohlížečů

Aby bylo možné zobrazit uložený obsah stránek na počítači bez připojení k internetu, byly vynalezeny offline prohlížeče. Mezi slavné. Umožňují vám kdykoli stáhnout zadané soubory po ztrátě připojení k webovému serveru. Programy Download Master jsou oblíbené v OS Windows. Zdarma ke stažení Manažer, ReGet. V KGet a d4x (Downloader pro X). Mnoho uživatelů Linuxu dává přednost použití NASA World Wind, který také používá HTTP.

Protokol HTTP je často používán programy ke stahování aktualizací.

V internetových vyhledávačích se používá celá řada robotických programů. Mezi nimi web pavouci(crawlery), které sledují hypertextové odkazy, sestavují databázi zdrojů serveru a ukládají jejich obsah pro další analýzu.

Viz také: Seznam vyhledávačů, Internetový archiv

Původní servery

Hlavní implementace: Internetová informační služba (IIS), nginx.

Viz také: Seznam webových serverů

Proxy servery

Hlavní implementace: UserGate, Multiproxy, Naviscope, Seznam webových serverů

Historie vývoje

HTTP/0.9

HTTP/1.0

HTTP/1.1

Aktuální verze protokolu byla přijata v červnu. Novinkou v této verzi byl režim „trvalého připojení“: Startovní čára) - určuje typ zprávy;

  • Nadpisy Záhlaví) - charakterizovat tělo zprávy, parametry přenosu a další informace;
  • Tělo zprávy Tělo zprávy) - samotná data zprávy. Musí být odděleny od záhlaví prázdným řádkem.
  • Záhlaví a tělo zprávy mohou chybět, ale počáteční řádek je povinným prvkem, protože označuje typ požadavku/odpovědi. Výjimkou je verze protokolu 0.9, ve které zpráva požadavku obsahuje pouze počáteční řádek a zpráva odpovědi obsahuje pouze tělo zprávy.

    Startovní čára

    Počáteční čáry se liší pro žádost a odpověď. Řetězec dotazu vypadá takto:

    ZÍSKAT URI- pro verzi protokolu 0.9. Metoda URI HTTP/ Verze- pro ostatní verze.

    Aby klient požádal o stránku pro daný článek, musí předat řetězec:

    ZÍSKEJTE /wiki/Http HTTP/1.0

    Počáteční řádek odpovědi serveru má následující formát:

    HTTP/ Verze Stavový kód Vysvětlení

    • Verze- dvojici arabských číslic oddělených tečkou, jako v žádosti.
    • Stavový kód(Angličtina) Stavový kód) - tři arabské číslice. Stavový kód určuje další obsah zprávy a chování klienta.
    • Vysvětlení(Angličtina) Odůvodnění Fráze) - krátké textové vysvětlení kódu odpovědi pro uživatele. Žádným způsobem neovlivňuje zprávu a je volitelná.

    Server například odpověděl na náš předchozí požadavek klienta na tuto stránku řádkem:

    HTTP/1.0 200 Ok

    Metody

    MOŽNOSTI

    Používá se k určení možností webového serveru nebo parametrů připojení pro konkrétní zdroj. Server BY MĚL ve své odpovědi zahrnout hlavičku Allow se seznamem podporovaných metod. Záhlaví odpovědí mohou také obsahovat informace o podporovaných rozšířeních.

    Očekává se, že požadavek klienta může obsahovat tělo zprávy označující informace, o které má zájem. Formát těla a postup práce s ním nejsou v současné době určeny. Server by to měl prozatím ignorovat. Situace je podobná s tělem v odpovědi serveru.

    Aby klient zjistil možnosti celého serveru, musí v URI zadat hvězdičku - „*“. MOŽNOSTI * Požadavky HTTP/1.1 lze také použít ke kontrole stavu serveru (podobně jako ping) a k testování, zda server podporuje HTTP verze 1.1.

    Výsledek této metody se neukládá do mezipaměti.

    ZÍSKAT

    Používá se k dotazování na obsah zadaného zdroje. Můžete také spustit proces pomocí metody GET. V tomto případě by měla být informace o průběhu procesu zahrnuta do těla zprávy s odpovědí.

    Klient může předat parametry provedení požadavku v cílovém identifikátoru URI prostředku po "? ":
    GET /path/resource?param1=value1¶m2=value2 HTTP/1.1

    Podle standardu HTTP požadavky zadejte GET jsou považovány za idempotentní – opakování stejného požadavku GET vícekrát by mělo přinést stejné výsledky (za předpokladu, že se samotný zdroj v době mezi požadavky nezměnil). To umožňuje ukládat odpovědi na požadavky GET do mezipaměti.

    Kromě konvenční metoda GET, také rozlišují mezi . Podmíněné požadavky GET obsahují Záhlaví If-Modified-Since, If-Match , If-Range a podobně. Částečné GETy obsahují rozsah v požadavku. Postup při vyřizování takových požadavků je standardem definován samostatně.

    HLAVA

    Podobné jako metoda GET, s tím rozdílem, že v odpovědi serveru není žádné tělo. Požadavek HEAD se obvykle používá k načtení metadat, kontrole existence zdroje (ověření adresy URL) a zjištění, zda se od posledního přístupu změnil.

    Záhlaví odpovědí mohou být uložena v mezipaměti. Pokud metadata zdroje neodpovídají odpovídajícím informacím v mezipaměti, je kopie zdroje označena jako zastaralá.

    ZVEŘEJNIT

    Používá se k přenosu uživatelských dat do určeného zdroje. Například na blozích mohou návštěvníci obvykle zadávat komentáře k příspěvkům do formuláře HTML, poté jsou odeslány na server a umístěny na stránku. V tomto případě jsou přenášená data (v příkladu s blogy text komentáře) zahrnuta do těla žádosti. Podobně se soubory obvykle nahrávají pomocí metody POST.

    Na rozdíl od metody GET se metoda POST nepovažuje za idempotentní, což znamená, že opakování stejných požadavků POST se může vrátit. různé výsledky(například po odeslání každého komentáře se objeví jedna kopie tohoto komentáře).

    Pokud jsou výsledky provedení 200 (OK) a 204 (Žádný obsah), měla by být v těle odpovědi zahrnuta zpráva o výsledku požadavku. Pokud byl prostředek vytvořen, server BY MĚL vrátit odpověď 201 (Vytvořeno) s URI nového prostředku v hlavičce Umístění.

    Zpráva odpovědi serveru na metodu POST není uložena do mezipaměti.

    DÁT

    Používá se k načtení obsahu požadavku do URI zadaného v požadavku. Pokud na daném URI nebyl žádný zdroj, server jej vytvoří a vrátí stav 201 (Vytvořeno). Pokud byl zdroj změněn, server vrátí 200 (OK) nebo 204 (žádný obsah). Server NESMÍ ignorovat neplatné hlavičky Content-* odeslané klientem spolu se zprávou. Pokud některá z těchto hlaviček nelze rozpoznat nebo nejsou za aktuálních podmínek platná, musí být vrácen chybový kód 501 (Not Implemented).

    Zásadním rozdílem mezi metodami POST a PUT je pochopení účelu URI zdroje. Metoda POST předpokládá, že zadaný URI bude použit ke zpracování obsahu zaslaného klientem. Pomocí PUT klient předpokládá, že stahovaný obsah odpovídá prostředku umístěnému na daném URI.

    Zprávy odpovědí serveru na metodu PUT se neukládají do mezipaměti.

    NÁPLAST

    Podobné jako PUT, ale vztahuje se pouze na část zdroje.

    VYMAZAT

    Odstraní zadaný prostředek.

    STOPA

    Vrátí přijatý požadavek, takže klient může vidět, jaké zprostředkující servery přidávají nebo mění požadavek.

    PŘIPOJIT

    Pro použití s ​​proxy servery, které se mohou dynamicky přepínat do tunelového režimu

    ODKAZ

    Naváže spojení mezi určeným zdrojem a ostatními.

    ODPOJIT

    Odebere spojení zadaného zdroje s ostatními.

    Stavové kódy

    Stavový kód je součástí prvního řádku odpovědi serveru. Představuje celé číslo 3 arabských číslic. První číslice označuje třída stavu. Za kódem odpovědi obvykle následuje vysvětlující fráze oddělená mezerou. angličtina, což naznačuje důvod této konkrétní reakce.

    Klient se z kódu odpovědi dozví o výsledcích svého požadavku a určí, jaké kroky podnikne dále. Sada stavových kódů je standardní a všechny jsou popsány v příslušných dokumentech IETF. Klient nemusí znát všechny stavové kódy, ale musí reagovat podle třídy kódu.

    V současnosti existuje pět tříd stavových kódů.

    1xx informační (ruština) Informační) Tato třída obsahuje kódy, které informují o procesu přenosu. V HTTP/1.0 by zprávy s takovými kódy měly být ignorovány. V HTTP/1.1 musí být klient připraven přijmout tuto třídu zpráv jako normální odpověď, ale nemusí na server nic posílat. Samotné zprávy ze serveru obsahují pouze počáteční řádek odpovědi a v případě potřeby několik polí záhlaví specifických pro odpověď. Proxy servery podobné zprávy musí být odesláno dále ze serveru klientovi. 2xx úspěch (ruština)Úspěšně ) Zprávy této třídy informují o případech úspěšného přijetí a zpracování požadavku klienta. V závislosti na stavu může server také přenášet záhlaví a tělo zprávy. 3xx přesměrování (ruština) Přesměrování) Stavové kódy třídy 3xx sdělují klientovi, že aby byla operace úspěšná, musí být další požadavek podán na jiné URI. Ve většině případů nová adresa uvedenou v poli Umístění v záhlaví. V tomto případě musí klient zpravidla provést automatický přechod (jarl. přesměrovat). Všimněte si, že když přistoupíte k dalšímu prostředku, můžete získat odpověď ze stejné třídy kódu. Může dokonce existovat dlouhý řetězec přesměrování, který, pokud by byl proveden automaticky, by způsobil nadměrné zatížení zařízení. Vývojáři HTTP protokolu proto důrazně doporučují, abyste si po druhé takové odpovědi v řadě vyžádali od uživatele potvrzení o přesměrování (dříve se doporučovalo až po 5.). Za sledování je odpovědný klient, as aktuální server může přesměrovat klienta na zdroj na jiném serveru. Klient musí také zabránit tomu, aby se dostal do kruhových přesměrování. Chyba klienta 4xx (ruština)

    Chyba klienta

    ) Třída kódu 4xx je určena k označení chyb na straně klienta. Při použití všech metod kromě HEAD musí server vrátit uživateli hypertextové vysvětlení v těle zprávy.

    Pro zapamatování hodnot kódů 400 až 417 existují ilustrativní mnemotechnické techniky 5xx Server Error (rus.

    Chyba serveru

    ) Kódy 5xx jsou přiděleny pro případy neúspěšné operace z důvodu chyby serveru. Pro všechny situace jiné než použití metody HEAD musí server do těla zprávy zahrnout vysvětlení, které klient zobrazí uživateli.

    Nadpisy Tělo zprávy HTTP/1.1 Host: ru.wikipedia.org User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Přijmout: text/html Připojení: zavřít

    Odpověď serveru:

    HTTP/1.0 200 OK Datum: středa, 11. února 2009 11:20:59 GMT Server: Apache X-Powered-By: PHP/5.2.4-2ubuntu5wm1 Poslední úprava: středa, 11. února 2009 11:20:59 GMT Obsah -Jazyk: ru Typ obsahu: text/html; charset=utf-8 Content-Length: 1234 Připojení: zavřít (následuje požadovaná stránka v

    Přesměrování

    Řekněme, že fiktivní společnost Example Corp. existuje hlavní stránka na adrese http://example.com a alias domény example-corp.com. Klient odešle požadavek na stránku O aplikaci do sekundární domény (některá záhlaví jsou vynechána):

    Umístění: http://www.example.com/about.html#contacts Datum: Čt, 19. února 2009 11:08:01 GMT Server: Apache/2.2.4 Content-Type: text/html; charset=windows-1251 Content-Length: 110 (prázdný řetězec) Klikněte zde

    Fragmenty můžete zadat v záhlaví Location jako v tomto příkladu. Prohlížeč fragment do požadavku nezahrnul, protože ho zajímá celý dokument. Jakmile ji však načte, automaticky posouvá stránku na fragment „kontakty“. Do těla odpovědi byl také umístěn krátký HTML dokument s odkazem, pomocí kterého se návštěvník dostane na vstupní stránka, pokud se na něj prohlížeč automaticky nepřepne. Záhlaví Content-Type obsahuje charakteristiky tohoto konkrétního vysvětlení HTML, nikoli dokumentu, který je umístěn na cílové adrese URL.

    Řekněme, že stejná společnost Example Corp. má několik regionálních poboček po celém světě. A pro každé zastoupení mají webové stránky s odpovídající ccTLD. Žádost domovskou stránku Hlavní web example.com může vypadat takto:

    / HTTP/1.1 Host: www.example.com User-Agent: MyLonelyBrowser/5.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru ,en-us;q=0.7,en;q=0.3 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7

    Server vzal v úvahu hlavičku Accept-Language a vygeneroval odpověď s dočasným přesměrováním na ruský server example.ru s uvedením jeho adresy v hlavičce Location:

    HTTP/1.x 302 Nalezeno Umístění: http://www.example.ru/ Cache-Control: private Datum: čtvrtek, 19. února 2009 11:08:01 GMT Server: Apache/2.2.6 Content-Type: text/html; charset=windows-1251 Content-Length: 82 (prázdný řádek) Příklad Corp. Rusko

    Všimněte si hlavičky Cache-Control. Hodnota "private" informuje ostatní servery (především proxy), že odpověď může být uložena do mezipaměti na straně klienta. V opačném případě je možné, že následní návštěvníci z jiných zemí pojedou vždy do jiného zastoupení.

    Pro přesměrování se také používají kódy odezvy (viz další) a (dočasné přesměrování).

    Obnovení a fragmentární stahování

    Řekněme, že fiktivní organizace nabízí stažení videa z minulé konference z webové stránky http://example.org/conf-2009.avi o objemu přibližně 160 MB. Podívejme se, jak se tento soubor stahuje v případě selhání a jak by správce stahování organizoval vícevláknové stahování několika fragmentů.

    V obou případech klient zadá svůj první požadavek takto:

    GET /conf-2009.avi HTTP/1.0 Hostitel: example.org Přijmout: */* User-Agent: Mozilla/4.0 (kompatibilní; MSIE 5.0; Windows 98) Referer: http://example.org/

    Záhlaví Referer označuje, že soubor byl vyžádán z domovské stránky webu. Správci stahování to obvykle také označují, aby napodobili přechod z webové stránky. Bez něj může server reagovat (přístup zakázán), pokud nejsou povoleny požadavky z jiných stránek. V našem případě server vrátil úspěšnou odpověď:

    HTTP/1.1 200 OK Datum: Čt, 19. února 2009 12:27:04 GMT Server: Apache/2.2.3 Poslední úprava: St, 18. června 2003 16:05:58 GMT ETag: "56d-9989200-1013c" Obsah -Typ: video/x-msvideo Obsah-délka: 160993792 Accept-Ranges: bytes Připojení: zavřít (prázdný řádek) (binární obsah celého souboru)

    Hlavička Accept-Ranges informuje klienta, že si může vyžádat fragmenty ze serveru, s uvedením jejich offsetů od začátku souboru v bajtech. Pokud tato hlavička chybí, může klient upozornit uživatele, že s největší pravděpodobností nebude možné soubor stáhnout. Na základě hodnoty hlavičky Content-Length rozdělí správce stahování celý svazek na stejné části a vyžádá si je samostatně, přičemž zorganizuje několik vláken. Pokud server velikost nespecifikuje, pak klient nebude moci implementovat paralelní stahování, ale zároveň bude moci pokračovat ve stahování souboru, dokud server neodpoví (Requested Range Not Satisfiable).

    Řekněme, že při velikosti 84 MB bylo internetové připojení přerušeno a proces stahování byl pozastaven. Když bylo internetové připojení obnoveno, prohlížeč automaticky odeslal na server nový požadavek, ale s pokyny k vrácení obsahu z 84. megabajtu:

    GET /conf-2009.avi HTTP/1.0 Hostitel: example.org Přijmout: */* User-Agent: Mozilla/4.0 (kompatibilní; MSIE 5.0; Windows 98) Rozsah: bajtů=88080384- Referrer: http://example.org/

    Server si nemusí pamatovat, co a od koho byly předchozí požadavky, a tak klient znovu vložil hlavičku Referer, jako by to byl jeho úplně první požadavek. Zadaná hodnota Záhlaví Range říká serveru „poskytněte obsah od 88080384 bajtu až do samého konce“. V tomto ohledu server vrátí následující odpověď:

    HTTP/1.1 206 Částečný obsah Datum: Čt, 19. února 2009 12:27:08 GMT Server: Apache/2.2.3 Poslední změna: St, 18. června 2003 16:05:58 GMT Etag: "56d-9989200-1132c580" Accept-Ranges: bytes Rozsah obsahu: bajty 88080384-160993791/160993792 Obsah-délka: 72913408 Připojení: zavřít Content-Type: video/x-msvideo (prázdný řádek) (binární obsah od 84 MB)

    Záhlaví Accept-Ranges zde již není vyžadováno, protože klient již o této schopnosti serveru ví. Klient se dozví, že kód je přenášen fragment (částečný obsah). Záhlaví Content-Range obsahuje informace o tento fragment: čísla počátečního a koncového bajtu a za lomítkem - celková velikost celého souboru v bajtech. Věnujte pozornost hlavičce Content-Length – udává velikost těla zprávy, tedy přenášeného fragmentu. Pokud server vrátí několik fragmentů, pak Content-Length bude obsahovat jejich celkový objem.

    Nyní se vraťme ke správci stahování. Se znalostí celkové velikosti souboru „conf-2009.avi“ jej program rozdělil na 10 stejných částí. Manažer načte první požadavek hned při prvním požadavku a přeruší připojení, jakmile dosáhne začátku druhého. Zbytek si vyžádá samostatně. Například bude požadována 4. sekce s následujícími záhlavími (některá záhlaví jsou vynechána – viz úplný příklad výše):

    GET /conf-2009.avi HTTP/1.0 Rozsah: bytes=64397516-80496894

    Odpověď serveru v tomto případě bude následující (některá záhlaví jsou vynechána – viz úplný příklad výše):

    HTTP/1.1 206 Částečný obsah Accept-Ranges: bytes Rozsah obsahu: bajty 64397516-80496894/160993792 Obsah-délka: 16099379 (prázdný řádek) (binární obsah části 4)

    Pokud je takový požadavek odeslán na server, který nepodporuje fragmenty, vrátí standardní odpověď (OK), jak je uvedeno na samém začátku, ale bez hlavičky Accept-Ranges.

    Viz také, rozsahy bajtů, odpověď 406, odpověď 416.

    Základní protokolové mechanismy

    Částečné GETy

    HTTP vám umožňuje požadovat ne celý obsah zdroje najednou, ale pouze zadaný fragment. Takové žádosti se nazývají částečné GETy, schopnost je spouštět je pro servery volitelná (ale žádoucí). Částečné GETy se používají hlavně pro obnovení souborů a rychlé paralelní stahování ve více vláknech. Některé programy stáhnou hlavičku archivu a zobrazí ji uživateli vnitřní struktura a poté si vyžádají fragmenty se zadanými prvky archivu.

    Pro přijetí fragmentu klient odešle požadavek na server s hlavičkou Range, v níž je uvedena nezbytná bajtové rozsahy. Pokud server nerozumí dílčím požadavkům (ignoruje hlavičku Range), vrátí celý obsah se stavem , jako u běžného GETu. V případě úspěchu server vrátí odpověď se stavem 206 (částečný obsah) namísto kódu 200, včetně záhlaví Content-Range v odpovědi. Samotné fragmenty mohou být přenášeny dvěma způsoby:

    Viz také.

    Podmíněné GET

    Vyjednávání obsahu

    Vyjednávání obsahu(Angličtina) Vyjednávání obsahu) - mechanismus automatická detekce nezbytný zdroj, pokud existuje několik různých typů verzí dokumentů. Předmětem koordinace mohou být nejen prostředky serveru, ale i vrácené stránky s chybovými hlášeními (atd.).

    Existují dva hlavní typy schválení:

    • Spravováno serverem(Angličtina) Server-Driven).
    • Řízené zákazníkem(Angličtina) Řízeno agentem).

    Oba typy nebo každý z nich samostatně lze používat současně.

    Hlavní specifikace protokolu (RFC 2616) také zdůrazňuje tzv transparentní schválení(Angličtina) Transparentní vyjednávání) jako preferovanou možnost pro kombinaci obou typů. Druhý mechanismus by neměl být zaměňován s nezávislou technologií Transparentní vyjednávání obsahu (TCN, ruština Průhledné schválení obsahu , viz RFC 2295), který není součástí protokolu HTTP, ale lze s ním použít. Oba mají významný rozdíl v principu fungování a samotném významu slova „transparentní“ ( průhledný). Ve specifikaci HTTP transparentnost znamená, že proces je pro klienta a server neviditelný, a v technologii TCN transparentnost znamená dostupnost úplného seznamu možností zdrojů pro všechny účastníky procesu doručování dat.

    Spravováno serverem

    Pokud existuje více verzí zdroje, server může analyzovat hlavičky požadavků klienta a vytvořit verzi, kterou považuje za nejvhodnější. Hlavní analyzované hlavičky jsou Accept, Accept-Charset, Accept-Encoding, Accept-Languages ​​​​a User-Agent. Je vhodné, aby server do odpovědi zahrnul hlavičku Vary označující parametry, kterými se obsah požadovaného URI liší.

    Geografická poloha klienta může být určena vzdálenou IP adresou.

    Serverem řízené vyjednávání má několik nevýhod:

    • Server pouze odhaduje, která možnost je nejvhodnější koncový uživatel, ale nemůže přesně vědět, co je v tuto chvíli potřeba (například verze v ruštině nebo angličtině).
    • Odesílá se mnoho hlaviček skupiny Accept, ale málo zdrojů s více možnostmi. Z tohoto důvodu je zařízení vystaveno nadměrnému zatížení.
    • Sdílená mezipaměť je omezena ve své schopnosti produkovat stejnou odpověď na stejné požadavky od různých uživatelů.
    • Předávání hlaviček Accept také narušuje soukromí uživatele tím, že odhaluje některé informace o preferencích uživatele.

    Řízené zákazníkem

    V v tomto případě typ obsahu je určen pouze na straně klienta. Za tímto účelem server vrátí se stavovým kódem 300 (Multiple Choices) nebo 406 (Not Acceptable) seznam možností, ze kterých uživatel vybere tu správnou. Klientem řízené odsouhlasení je dobré, když se obsah liší běžnými způsoby (jako je jazyk a kódování) a používá se veřejná mezipaměť. Hlavní nevýhoda: další zatížení, protože k získání požadovaného obsahu musíte zadat další požadavek.

    Transparentní schválení

    Toto vyjednávání je pro klienta i server zcela transparentní. V tomto případě se používá sdílená mezipaměť, která obsahuje seznam možností, podobně jako klientem řízené vyjednávání. Pokud mezipaměť rozumí všem těmto možnostem, pak se rozhodne sama, jako při vyjednávání řízeném serverem. To snižuje zatížení původního serveru a eliminuje další požadavky od klienta.

    Základní specifikace HTTP nepopisuje mechanismus transparentního vyjednávání podrobně.

    Vícenásobný obsah

    Hlavní článek: hierarchie s vnořováním prvků do sebe. Typy médií multipart/* se používají k označení vícenásobného obsahu. Práce s takovými typy se provádí pomocí obecná pravidla jak je popsáno v RFC 2046 (pokud není u konkrétního typu média uvedeno jinak). Pokud příjemce neví, jak s typem zacházet, pak s ním zachází stejně jako s vícedílným/smíšeným .

    Na straně serveru lze jako odpověď odesílat zprávy s více obsahem při požadavku na více fragmentů zdrojů. V tomto případě je použit typ média multipart/byteranges.



    Protokol HTTP nebo HyperText Transfer Protocol je hlavním protokolem (World Wide Web). Hlavním úkolem protokolu je zajistit přenos hypertextu po síti. Protokol přesně popisuje formát zprávy pro výměnu klientů a serverů.

    Protokol HTTP je popsán v RFC 2616 (HTTP1.1).

    Základem protokolu je zajištění interakce mezi klientem a serverem pomocí jednoho ASCII požadavku a následné odpovědi na něj ve standardu RFC 822 MIME.

    V praxi protokol HTTP funguje na portu 80, ale lze jej nakonfigurovat jinak. A přestože TCP/IP není povinné, zůstává preferováno, protože se stará o rozdělování a sestavování zpráv a „nezatěžuje“ prohlížeč ani server.

    Nutno podotknout, že protokol HTTP lze využít nejen ve webových technologiích, ale i v jiných OOP aplikacích (objektivně orientovaných).

    URL

    Základem webové komunikace klient-server je požadavek. Požadavek je odeslán pomocí adresy URL – Uniform Internet Resource Locator. Dovolte mi připomenout, co je URL.

    Jasná a jednoduchá struktura URL se skládá z následujících prvků:

    • Protokol;
    • Hostitel;
    • Přístav;
    • Adresář zdrojů;
    • Štítky (Dotaz).

    Poznámka: Protokol http je protokol pro jednoduchá, nezabezpečená připojení. Zabezpečená připojení fungují přes http protokol s. Je bezpečnější pro výměnu dat.

    Metody požadavků HTTP

    Jeden z parametry URL, udává jméno hostitele, se kterým chceme komunikovat. Ale to nestačí. Musíte určit akci, kterou podniknete. To lze provést pomocí metody definované protokolem HTTP.

    Metody HTTP

    • Metoda/Popis
    • HEAD/Přečtěte si název webové stránky
    • ZÍSKEJTE/Přečtěte si webovou stránku
    • POST/Přidat na webovou stránku
    • PUT/Uložit webovou stránku
    • TRACE/Odeslat zpět požadavek
    • DELETE/Smazat webovou stránku
    • OPTIONS/Možnosti zobrazení
    • CONNECT/Rezervováno pro budoucí použití

    Podívejme se na metody HTTP podrobněji

    metoda GET. požaduje stránku (soubor, objekt) zakódovanou pomocí standardu MIME. Toto je nejpoužívanější metoda. Struktura metody:
    GET název souboru HTTP/1.1

    metoda HEAD. Tato metoda vyžaduje záhlaví zprávy. Stránka se však nenačte. Tato metoda umožňuje zjistit čas poslední aktualizace stránky, což je potřeba pro správu mezipaměti stránek. Tato metoda umožňuje zkontrolovat funkčnost požadované adresy URL.

    metoda PUT. Tato metoda může umístit stránku na server. Tělo požadavku PUT obsahuje stránku, která má být hostována a která je kódována MIME. Tato metoda vyžaduje identifikaci klienta.

    Metoda POST. Tato metoda přidá obsah na existující stránku. Používá se jako příklad pro přidání příspěvku do fóra.

    Metoda DELETE. Tato metoda stránku zničí. Metoda mazání vyžaduje potvrzení práv uživatele k mazání.

    metoda TRACE. Toto je metoda ladění. Instruuje server, aby odeslal požadavek zpět, a umožňuje mu při návratu ze serveru zjistit, zda je požadavek klienta poškozen nebo ne.

    CONNECT metoda– metoda rezervy, nepoužívá se.

    metoda OPTIONS umožňuje dotazovat se na vlastnosti serveru a vlastnosti libovolného souboru.

    Při komunikaci požadavek-odpověď mezi klientem a serverem server nutně generuje odpověď. Může to být webová stránka nebo stavový řádek se stavovým kódem. Stavový kód dobře znáte. Jedním z kódů je známý kód 404 – Stránka nenalezena.

    Skupiny stavových kódů

    1хх: Připravenost serveru, Kód 100 – server je připraven zpracovávat požadavky klientů;

    2xx: Úspěch.

    • Kód 200 – požadavek byl úspěšně zpracován;
    • Kód 204 – Žádný obsah.

    3xx: Přesměrování.

    • Kód 301 – Požadovaná stránka byla přesunuta;
    • Kód 304 – Stránka v mezipaměti je stále relevantní.

    4xx: Chyba klienta.

    Standardní protokol pro přenos dat přes World Wide Web-- toto je HTTP (HyperText Transfer Protocol). Popisuje zprávy, které lze vyměňovat mezi klienty a servery. Každá interakce se skládá z jednoho požadavku ASCII následovaného jedinou odpovědí, podobnou standardní odpovědi RFC 822 MIME. Všichni klienti a všechny servery musí dodržovat tento protokol. Je definován v RFC 2616.

    Spojení

    Obvyklým způsobem komunikace prohlížeče se serverem je navázání TCP spojení s portem 80 serveru, ačkoli tento postup není formálně vyžadován. Hodnota použití TCP spočívá v tom, že ani prohlížeče, ani servery se nemusí starat o ztrátu, duplikaci, dlouhé zprávy a potvrzení. To vše zajišťuje protokol TCP.

    V HTTP 1.0 byl po navázání spojení odeslán jeden požadavek, na který byla přijata jedna odpověď. Poté bylo TCP spojení ukončeno. V té době typická webová stránka sestávala výhradně z HTML textu a tento způsob interakce byl adekvátní. Uplynulo však několik let a stránka obsahovala mnoho ikon, obrázků a dalších dekorací. Je zřejmé, že nastavení TCP spojení pro přenos jediné ikony je plýtvání a příliš drahé.

    Tato úvaha vedla k vytvoření protokolu HTTP 1.1, který podporoval stabilní připojení. To znamenalo, že bylo možné navázat TCP spojení, odeslat požadavek, přijmout odpověď a poté odeslat a přijmout další požadavky a odpovědi. Snížily se tak režijní náklady vzniklé při neustálých instalacích připojení a odpojování. Bylo také možné zpracovat požadavky, to znamená poslat požadavek 2 ještě předtím, než dorazí odpověď na požadavek 1.

    Ačkoli byl HTTP navržen speciálně pro použití ve webových technologiích, byl záměrně zobecněn, než bylo nutné, protože byl určen pro budoucí použití v objektově orientovaných aplikacích. Z tohoto důvodu kromě běžných dotazů na webové stránky speciální operace, nazývané metody. Vděčí za svou existenci technologie SOAP. Každý požadavek se skládá z jednoho nebo více řetězců ASCII, přičemž první slovo je název metody, která má být volána. Vestavěné způsoby jsou uvedeny v tabulce na obr. 6. Kromě těchto obecných metod mohou mít různé objekty také své vlastní specifické metody. V názvech metod se rozlišují velká a malá písmena, což znamená, že metoda GET existuje, ale metoda get nikoli.

    Obrázek 6 - Vestavěné metody požadavku HTTP

    Metoda GET požaduje stránku ze serveru (pod kterým in obecný případ implikovaný objekt, ale v praxi je to obvykle jen soubor) zakódovaný podle standardu MIME. Většina z požadavky na server se skládají z požadavků GET.

    Metoda HEAD jednoduše požaduje záhlaví zprávy, bez samotné stránky. Pomocí této metody můžete zjistit čas poslední změna stránky ke shromažďování informací o indexu nebo jednoduše ke kontrole funkčnosti dané adresy URL.

    Metoda PUT je opakem metody GET: stránku nečte, ale zapisuje. Tato metoda umožňuje vytvořit sadu webových stránek na vzdáleném serveru. Tělo požadavku obsahuje stránku. Může být kódován MIME. V tomto případě mohou řádky následující po příkazu PUT obsahovat různá záhlaví, jako jsou záhlaví Content-Type nebo autentizační, potvrzující práva účastníka na požadovanou operaci.

    Metoda POST je poněkud podobná metodě PUT. Obsahuje také adresu URL, ale namísto nahrazení stávajících dat se „připojí“ nová data (v určitém okamžiku v obecném smyslu) na stávající. Může to být odeslání zprávy na konferenci nebo přidání souboru do elektronická deska Reklamy BBS. V praxi se PUT ani POST příliš nepoužívají.

    Metoda DELETE nepřekvapivě odstraní stránku. Stejně jako u metody PUT zde může hrát zvláštní roli autentizace a oprávnění k provedení této operace. I když má uživatel oprávnění stránku smazat, není zaručeno, že metoda DELETE stránku smaže, protože i když vzdálený HTTP server souhlasí, samotný soubor nesmí být změněn ani přesouván.

    Pro ladění je určena metoda TRACE. Říká serveru, aby poslal požadavek zpět. Tato metoda je zvláště užitečná, když požadavky nejsou zpracovány správně a klient chce vědět, jaký druh požadavku server skutečně přijímá.

    Metoda CONNECT se v současné době nepoužívá. Je vyhrazen pro budoucí použití.

    Metoda OPTIONS umožňuje klientovi zeptat se serveru na jeho vlastnosti nebo vlastnosti konkrétního souboru.

    Jako odpověď na každý požadavek je ze serveru přijata odpověď obsahující stavový řádek a případně další informace (například webová stránka nebo její část). Stavový řádek může obsahovat třímístný stavový kód udávající, zda byl požadavek úspěšný nebo proč selhal. První kategorie je určena k rozdělení všech odpovědí do pěti hlavních skupin, jak ukazuje tabulka na obr. 7. Kódy začínající 1 Aхх) se v praxi používají zřídka. Kódy začínající 2 znamenají, že požadavek byl úspěšně zpracován a data (pokud byla požadována) byla odeslána. Kódy 3xx říkají klientovi, aby zkusil štěstí jinde – buď pomocí jiné adresy URL, nebo vlastní mezipaměti.

    Obrázek 7 - Skupiny stavových kódů obsažených v odpovědích serveru

    Kódy začínající 4 znamenají, že požadavek selhal z nějakého důvodu souvisejícího s klientem: například byla požadována neexistující stránka nebo byl požadavek samotný nesprávný. Nakonec kódy 5xx označují chyby serveru, ať už kvůli chybě programu nebo dočasnému přetížení.

    Příklad použití HTTP

    Protože HTTP je textový protokol, lze interakci se serverem přes terminál (který v tomto případě funguje jako opak prohlížeče) organizovat poměrně jednoduše. Stačí navázat TCP spojení s portem 80 serveru. Čtenář se může sám přesvědčit, jak tento skript funguje (je lepší jej spustit UNIXový systém, protože některé jiné systémy nemusí zobrazit stav připojení). Posloupnost příkazů je tedy následující:

    Obrázek 8 - sekvence příkazů protokolu HTTP

    Tato sekvence příkazů naváže telnetové spojení (tj. TCP spojení) k portu 80 webového serveru IETF na adrese www.ietf.org.

    Výsledek komunikační relace je zaznamenán do souboru protokolu, který lze následně prohlížet. Následuje příkaz GET. Zobrazí se název požadovaného souboru a přenosový protokol. Dále následuje požadovaný řádek s hlavičkou Host. Je také vyžadován prázdný řádek, který za ním následuje. Signalizuje serveru, že došly hlavičky požadavků. Příkaz close (toto je příkaz programu telnet) uzavře spojení.

    Soubor protokolu připojení, protokol, lze zobrazit pomocí libovolného textový editor. Mělo by to začít přibližně tak, jak je uvedeno ve výpisu na obrázku 8, pokud během této doby nedošlo na webu IETF k nějakým změnám.

    Obrázek 9 - Začátek výstupu souboru „www.ietf.org/rfc.html“

    První tři řádky v tomto seznamu jsou generovány programem telnet, nikoli vzdáleným serverem. Ale řádek začínající HTTP/1.1 je již odpovědí IETF, což znamená, že server s vámi chce komunikovat pomocí protokolu HTTP/1.1. Následuje řada hlaviček a nakonec samotný obsah požadovaného souboru. Záhlaví ETag, což je jedinečný identifikátor stránky spojený s ukládáním do mezipaměti, a X-Pad, nestandardní záhlaví, které pomáhá bojovat proti chybám prohlížeče.

    HTTP je protokol pro přenos hypertextu mezi distribuovanými systémy. Základním prvkem je v podstatě http moderní web. Jako sebevědomí weboví vývojáři bychom o tom měli vědět co nejvíce.

    Podívejme se na tento protokol optikou naší profese. V první části si projdeme základy a podíváme se na požadavky/odpovědi. V příštím článku se podíváme na podrobnější funkce, jako je ukládání do mezipaměti, zpracování připojení a ověřování.

    Také v tomto článku budu odkazovat hlavně na standard RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1.

    Základy HTTP

    HTTP umožňuje komunikaci mezi více hostiteli a klienty a podporuje řadu síťových nastavení.

    V zásadě se pro komunikaci používá TCP/IP, ale není to jediné možná varianta. Standardně TCP/IP používá port 80, ale lze použít i jiné.

    Komunikace mezi hostitelem a klientem probíhá ve dvou fázích: požadavek a odpověď. Klient tvoří HTTP požadavek, na kterou server dá odpověď (zprávu). O něco později se na toto schéma práce podíváme podrobněji.

    Aktuální verze protokolu HTTP je 1.1, ve které byly zavedeny některé nové funkce. Nejdůležitější z nich jsou podle mě: neustálá podpora otevřené spojení, nový mechanismus přenosu dat blokové kódování přenosu, nové hlavičky pro ukládání do mezipaměti. Na některé z nich se podíváme ve druhé části tohoto článku.

    URL

    Jádrem webové komunikace je požadavek, který je zasílán přes Uniform Resource Locator (URL). Určitě už víte, co je URL, ale pro úplnost jsem se rozhodl říct pár slov. Struktura URL je velmi jednoduchá a skládá se z následujících komponent:

    Protokol může být buď http pro běžná připojení, nebo https pro bezpečnější výměnu dat. Výchozí port je 80. Následuje cesta ke zdroji na serveru a řetězec parametrů.

    Metody

    S pomocí URL, definujeme přesné jméno hostitele, se kterým chceme komunikovat, ale to, jakou akci potřebujeme provést, lze sdělit pouze pomocí metody HTTP. Samozřejmě existuje několik typů akcí, které můžeme podniknout. HTTP implementuje ty nejnutnější, vhodné pro potřeby většiny aplikací.

    Stávající metody:

    ZÍSKAT: Přístup k existujícímu zdroji. Adresa URL uvádí všechny potřebné informace, aby server mohl najít a vrátit požadovaný zdroj jako odpověď.

    ZVEŘEJNIT: Používá se k vytvoření nového zdroje. Požadavek POST obvykle obsahuje všechny potřebné informace k vytvoření nového zdroje.

    DÁT: Aktualizace aktuálního zdroje. Požadavek PUT obsahuje data, která mají být aktualizována.

    VYMAZAT: Používá se k odstranění existujícího zdroje.

    Tyto metody jsou nejoblíbenější a nejčastěji je využívají různé nástroje a frameworky. V některých případech jsou požadavky PUT a DELETE odesílány přes odeslání POST, jehož obsah označuje akci, kterou je třeba se zdrojem provést: vytvořit, aktualizovat nebo odstranit.

    HTTP podporuje také další metody:

    HLAVA: Podobné jako GET. Rozdíl je v tom, že u tohoto typu požadavku není přenášena žádná zpráva. Server přijímá pouze hlavičky. Používá se například k určení, zda byl zdroj změněn.

    STOPA: během přenosu prochází požadavek mnoha přístupovými body a proxy servery, z nichž každý zadává své vlastní informace: IP, DNS. Použitím tato metoda, můžete vidět všechny mezilehlé informace.

    MOŽNOSTI: Používá se k určení možností serveru, nastavení a konfigurace pro konkrétní prostředek.

    Stavové kódy

    V reakci na požadavek od klienta server odešle odpověď, která také obsahuje stavový kód. Tento kód má zvláštní význam, aby klient mohl jasněji pochopit, jak interpretovat odpověď:

    1xx: Informační zprávy

    Sada těchto kódů byla zavedena v HTTP/1.1. Server může odeslat požadavek ve tvaru: Expect: 100-continue, což znamená, že klient stále posílá zbytek požadavku. Klienti používající protokol HTTP/1.0 tyto hlavičky ignorují.

    2xx: Zprávy o úspěchu

    Pokud klient obdržel kód z řady 2xx, byl požadavek úspěšně odeslán. Nejběžnější možností je 200 OK. S požadavkem GET server odešle odpověď v těle zprávy. Existují i ​​další možné odpovědi:

    • 202 Přijato: Požadavek je přijat, ale nemusí obsahovat zdroj v odpovědi. To je užitečné pro asynchronní požadavky na straně serveru. Server určí, zda zdroj odeslat či nikoli.
    • 204 Žádný obsah: V těle odpovědi není žádná zpráva.
    • 205 Obnovit obsah: Instruuje server, aby resetoval prezentaci dokumentu.
    • 206 Částečný obsah: Odpověď obsahuje pouze část obsahu. Další záhlaví určují celkovou délku obsahu a další informace.

    3xx: Přesměrování

    Jakýsi vzkaz klientovi o nutnosti provést ještě jednu akci. Nejčastějším případem použití je přesměrování klienta na jinou adresu.

    • 301 Trvale přesunuto: zdroj lze nyní najít jinak URL adresa.
    • 303 Viz Ostatní: Zdroj lze dočasně nalézt na jiné adrese URL. Záhlaví Location obsahuje dočasnou adresu URL.
    • 304 Nezměněno: Server určí, že zdroj nebyl změněn a klient musí použít verzi odpovědi uloženou v mezipaměti. Ke kontrole identity informací se používá ETag (Entity Tag hash);

    4xx: Chyby klienta

    Tuto třídu zpráv server použije, pokud rozhodne, že požadavek byl odeslán omylem. Nejběžnější kód je 404 Not Found. To znamená, že zdroj nebyl na serveru nalezen. Další možné kódy:

    • 400 špatný požadavek: Otázka byla vytvořena špatně.
    • 401 Neoprávněně: Pro zadání požadavku je vyžadováno ověření. Informace jsou přenášeny prostřednictvím hlavičky Authorization.
    • 403 Zakázáno: Server nepovolil přístup ke zdroji.
    • Metoda 405 není povolena: Pro přístup k prostředku byla použita neplatná metoda HTTP.
    • 409 Konflikt: server nemůže plně zpracovat požadavek, protože snažit se více změnit nová verze zdroj. To se často stává u požadavků PUT.

    5xx: Chyby serveru

    Řada kódů, které se používají k detekci chyby serveru při zpracování požadavku. Nejběžnější: 500 Interní chyba serveru. Další možnosti:

    • 501 Neimplementováno: Server nepodporuje požadovanou funkci.
    • Služba 503 není k dispozici: K tomu může dojít, pokud má server chybu nebo je přetížen. V tomto případě obvykle server neodpovídá a vyprší čas daný pro odpověď.

    Formáty zpráv požadavku/odpovědi

    Na následujícím obrázku můžete vidět schematický proces odeslání požadavku klientem, zpracování a odeslání odpovědi serverem.

    Podívejme se na strukturu přenášená zpráva přes HTTP:

    Zpráva = *() CRLF [ ] = Linka poptávky | Stavový řádek = Název pole ":" Hodnota pole

    Mezi záhlavím a tělem zprávy musí být prázdný řádek. Může existovat několik nadpisů:

    Tělo odpovědi může obsahovat všechny informace nebo jejich část, pokud je povolena odpovídající funkce (kódování přenosu: blokové). HTTP/1.1 také podporuje záhlaví Transfer-Encoding.

    Obecné nadpisy

    Zde je několik typů hlaviček, které se používají v požadavcích i odpovědích:

    General-header = Cache-Control | Připojení | Datum | Pragma | Trailer | Přenos kódování | Upgrade | Přes | Varování

    Některým věcem jsme se již věnovali v tomto článku, některým se budeme podrobněji věnovat ve druhém díle.

    Hlavička via se používá v požadavku TRACE a je aktualizována všemi proxy servery.

    Hlavička Pragma se používá k výpisu vlastních hlaviček. Například Pragma: no-cache je to samé jako Cache-Control: no-cache. Více si o tom povíme ve druhé části.

    Záhlaví Date se používá k uložení data a času požadavku/odpovědi.

    Záhlaví Upgrade se používá ke změně protokolu.

    Transfer-Encoding je určen k rozdělení odpovědi na více částí pomocí Transfer-Encoding: chunked. Toto je nová funkce v HTTP/1.1.

    Záhlaví entit

    Záhlaví entit předávají metainformace o obsahu:

    Entity-header = Povolit | Kódování obsahu | Jazyk obsahu | Obsah-délka | Obsah-Umístění | Obsah-MD5 | Rozsah obsahu | Typ obsahu | Vyprší | Naposledy změněno

    Všechny hlavičky s předponou Content – ​​poskytují informace o struktuře, kódování a velikosti těla zprávy.

    Záhlaví Expires obsahuje čas a datum vypršení platnosti entity. Hodnota „nikdy nevyprší“ znamená čas + 1 kód s aktuální okamžik. Last-Modified obsahuje čas a datum, kdy byla entita naposledy změněna.

    Pomocí těchto hlaviček můžete zadat informace nezbytné pro vaše úkoly.

    Formát požadavku

    Žádost vypadá asi takto:

    Request-Line = Metoda SP URI SP HTTP verze Metoda CRLF = "OPTIONS" | "HLAVA" | "ZÍSKAT" | "POST" | "PUT" | "SMAZAT" | "STOPA"

    SP je oddělovač mezi tokeny. Verze HTTP je uvedena v HTTP-Version. Skutečná žádost vypadá takto:

    GET /articles/http-basics HTTP/1.1 Host: www.articles.com Připojení: keep-alive Cache-Control: no-cache Pragma: no-cache Accept: text/html,application/xhtml+xml,application/xml; q=0,9,*/*;q=0,8

    Seznam možných hlaviček požadavků:

    Záhlaví požadavku = Přijmout | Accept-Charset | Accept-Encoding | Přijímací jazyk | Oprávnění | Očekávejte | Od | Host | If-Match | If-Modified-Since | If-None-Match | If-Range | If-Unmodified-Since | Max-vpřed | Proxy-autorizace | Rozsah | Referrer | TE | User-Agent

    Záhlaví Accept určuje podporované mimické typy, jazyk, kódování znaků. Záhlaví From, Host, Referer a User-Agent obsahují informace o klientovi. Předpony if- jsou určeny k vytvoření podmínek. Pokud podmínka nevyhoví, dojde k chybě 304 Neupraveno.

    Formát odpovědi

    Formát odpovědi se liší pouze stavem a počtem hlaviček. Stav vypadá takto:

    Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

    • HTTP verze
    • Stavový kód
    • Stavová zpráva čitelná pro člověka

    Normální stav vypadá asi takto:

    HTTP/1.1 200 OK

    Hlavičky odpovědí mohou být následující:

    Response-header = Accept-Ranges | Věk | Etag | Umístění | Proxy-Authenticate | Opakovat-po | Server | Vařit | WWW-ověření

    • Stáří je čas v sekundách, kdy byla zpráva vytvořena na serveru.
    • ETAG entity MD5 pro kontrolu změn a úprav odpovědi.
    • Umístění se používá pro přesměrování a obsahuje novou adresu URL.
    • Server určuje server, na kterém byla vygenerována odpověď.

    Myslím, že pro dnešek je teorie dost. Nyní se podíváme na nástroje, které můžeme použít ke sledování HTTP zpráv.

    Nástroje pro detekci HTTP provozu

    Existuje mnoho nástrojů pro monitorování HTTP provozu. Zde je několik z nich:

    Nejčastěji používané jsou nástroje pro vývojáře Chrome:

    Pokud mluvíme o debuggeru, můžete použít Fiddler:

    Pro Sledování HTTP traffic budete potřebovat curl, tcpdump a tshark.

    Knihovny pro práci s HTTP - jQuery AJAX

    Protože je jQuery tak populární, má také nástroje pro zpracování HTTP odpovědí na požadavky AJAX. Informace o jQuery.ajax(settings) najdete na oficiálních stránkách.

    Předáním objektu nastavení a použitím funkce zpětného volání beforeSend můžeme nastavit hlavičky požadavků pomocí metody setRequestHeader().

    $.ajax(( url: "http://www.articles.com/latest", typ: "GET", beforeSend: function (jqXHR) ( jqXHR.setRequestHeader("Accepts-Language", "en-US,en" ");)));

    Pokud chcete zpracovat stav požadavku, můžete to udělat takto:

    $.ajax(( statusCode: ( 404: function() ( alert("stránka nenalezena"); ) ) ));

    Sečteno a podtrženo

    Zde je prohlídka základů protokolu HTTP. V druhém díle toho bude ještě víc zajímavá fakta a příklady.



    
    Nahoru