Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 9005|Odpověď: 0

Podrobná interpretace délky obsahu v HTTP protokolu

[Kopírovat odkaz]
Zveřejněno 24.09.2019 15:53:29 | | |
Obsah-délka se používá k popisu přenosové délky těla zprávy. V protokolu HTTP je rozdíl mezi délkou entity zprávy a délkou přenosu entity, například při kompresi gzip je délka entity zprávy délka před kompresí a délka přenosu entity zprávy je délka po kompresi gzip.

Při konkrétních HTTP interakcích je způsob, jakým klient získává délku zprávy, založen hlavně na následujících pravidlech:

Pokud je odpověď 1xx, 204, 304 nebo hlavní požadavek, obsah entity zprávy je přímo ignorován.
Pokud existuje přenosové kódování, je preferována metoda v přenosovém kódování pro nalezení odpovídající délky. Například model rozdělených částí.
"Pokud je v hlavě Obsah-Délka, pak tato Obsah-Délka představuje jak délku těla, tak přenosovou délku. Pokud délka entity a délka přenosu nejsou stejné (např. je nastaveno Transfer-Enkódování), pak nelze nastavit délku obsahu.Pokud je nastaveno Transfer-Enkódování, pak bude Content-Length ignorována”。 Výhodou tohoto překladu vět je, že existuje pouze jeden bod: při Transfer-Encoding nemůže existovat obsahová délka.
Přenos vzdálenosti. Nevěnoval jsem tomu pozornost, nečetl jsem to do detailu :)
Uzavření spojení přes server určuje délku odesílané zprávy. (Žadatel nemůže uzavřít spojení na konci těla požadavku, protože by to serveru nechalo možnost pokračovat v odpovědi.) Tato situace se týká především krátkých spojení, tj. režimu non-keep-alive.
HTTP 1.1 musí podporovat chunk režim. Protože když je délka zprávy nejistá, lze tuto situaci řešit pomocí mechanismu chunků.
V hlavičce obsahující obsah zprávy, pokud je pole délky obsahu, musí odpovídající hodnota tohoto pole přesně odpovídat délce tématu zprávy.
"Délka entity zprávy je délka těla zprávy před tím, než byly aplikovány jakékoliv přenosové kódy"
To jePokud existuje blok, nemůže existovat obsahová délka

Mechanismus trvalého připojení HTTP/1.0 byl zaveden později a je implementován prostřednictvím hlavičky Connection: keep-alive, kterou mohou server i klient použít k tomu, aby si navzájem sdělili, že nemusí po odeslání dat odpojovat TCP spojení pro pozdější použití.HTTP/1.1 vyžaduje, aby všechna spojení byla trvaláPokud výslovně nepřidáte Connection: blízko hlavičky。 Takže pole Connection v hlavičce v HTTP/1.1 už nemá hodnotu keep-alive, ale z historických důvodů si mnoho webových serverů a prohlížečů stále zachovává zvyk posílat dlouhé spoje Connection: keep-alive na HTTP/1.1.

Ve skutečnosti lze poslední několik téměř ignorovat a stručné shrnutí je následující:


1. Délka obsahu: Pokud existuje a je platná, musí být přesně stejná jako délka přenosu obsahu zprávy. (Testováno tak, aby se zkrátilo, pokud je příliš krátké a příliš dlouhé na to, aby způsobilo timeout.) )
2. Pokud je Transfer-Encoding (zaměření je rozděleno na části), nemůže být v hlavičce žádná délka obsahu a bude ignorována.
3. Pokud je použito krátké spojení, délku přenosu zprávy lze přímo určit uzavřením spojení přes server. (To je snadné pochopit)
Ve spojení s dalšími funkcemi HTTP protokolu, například Http1.1 nepodporoval keep alive. Pak lze vyvodit následující závěry:
1. V Http 1.0 a starších verzích je pole délky obsahu volitelné.
2. V http1.1 a novějších verzích. Pokud zůstaneš naživu, pak délka obsahu a chunk musí být jedním z nich. Pokud není udržován naživu, je to stejné jako http1.0. obsahová délka.





Předchozí:"Node.js: Let's Dozen C++ Extensions" pdf skenovaná verze [146MB]
Další:Délka obsahu protokolu Http
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com