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: 9827|Odpověď: 0

HTTP protokol Transfer-Encoding (rozdělený na části)

[Kopírovat odkaz]
Zveřejněno 24.09.2019 18:07:57 | | | |
1. Pozadí:

  • Přetrvávající problémy s připojením: U netrvalých připojení může prohlížeč definovat hranice požadované nebo odpovědní entity podle toho, zda je spojení nefunkční nebo ne; U spojitých spojení tento přístup samozřejmě nefunguje. Někdy, i když jsem všechna data odeslal, prohlížeč neví, jestli na otevřeném připojení přijdou nová data, takže prostě čeká.
  • Vyřešte s obsahovou délkou: Spočítejte délku entity a řekněte druhé straně přes hlavu. Prohlížeč může poznat, že entita odpovědi je over podle informace o délce obsahu
  • Nový problém s délkou obsahu: Protože pole Délka obsahu musí skutečně odrážet délku entity, délka je u dynamicky generovaného obsahu neznámá, dokud není obsah vytvořen. V tuto chvíli, abyste přesně určili délku, můžete otevřít pouze dostatečně velký buffer a počkat, až bude vygenerován veškerý obsah, než začnete počítat. To však vyžaduje větší paměťovou zátěž na jedné straně a na druhé straně to způsobí, že klient čeká déle.
  • Potřebujeme nový mechanismus, který nebude závislý na délce hlavičky a zná hranice entit – Transfer-Encoding: chunked.

2. Přenosové kódování (rozdělené na části)

  • Přenosové kódování je pole HTTP hlavičky (pole hlavičky odpovědi), což doslova znamená "přenosové kódování". Nejnovější specifikace HTTP definuje pouze jeden typ kódovacího transportu: chunked.
  • Kódování přenosu v částech je mechanismus přenosu dat v rámci protokolu Hypertext Transfer Protocol (HTTP), který umožňuje rozdělit HTTP data zaslaná webovým serverem klientovi na více částí. Kódování blokového transportu je dostupné pouze ve verzi HTTP protokolu 1.1 (HTTP/1.1).
  • Data jsou rozdělena na sérii bloků a odesílána v jedné nebo více částech, aby server mohl odesílat data, aniž by předem znal celkovou velikost odeslaného obsahu.


Specifické metody

  • Po přidání Transfer-Encoding: chunked do hlavičky to znamená, že paket je chunked. V tomto případě je třeba entity v paketu přenášet v sérii bloků.
  • Každý blok obsahuje hexadecimální hodnotu délky a data, přičemž hodnota délky je exkluzivní pro jeden řádek, přičemž délka nezahrnuje CRLF na jeho konci ani CRLF na konci rozdělených dat.
  • Poslední hodnota délky bloku musí být 0 a odpovídající data bloku neobsahují žádný obsah, což označuje konec entity.




asp.net Základní testovací kód:







Předchozí:Délka obsahu protokolu Http
Další:Tři faktory, kvůli kterým Chrome odsuzuji
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