Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 10089|Odpoveď: 0

HTTP protokol Transfer-Encoding (rozdelený na kúsky)

[Kopírovať odkaz]
Zverejnené 24. 9. 2019 18:07:57 | | | |
1. Pozadie:

  • Pretrvávajúce problémy s pripojením: Pri neperzistentných pripojeniach môže prehliadač definovať hranice žiadajúcej alebo odpovedajúcej entity podľa toho, či je spojenie nefunkčné alebo nie; Pri kontinuálnych spojeniach tento prístup samozrejme nefunguje. Niekedy, aj keď som poslal všetky dáta, prehliadač nevie, či neprídu nové dáta na otvorené pripojenie, takže jednoducho čaká.
  • Rieš s obsahovou dĺžkou: Vypočítaj dĺžku entity a povedz druhej strane cez hlavu. Prehliadač môže zistiť, že entita odpovede je over podľa informácií o dĺžke obsahu
  • Nový problém s dĺžkou obsahu: Keďže pole Obsah-Dĺžka musí skutočne odrážať dĺžku entity, dĺžka je pre dynamicky generovaný obsah neznáma, kým nie je obsah vytvorený. V tomto čase, aby ste presne zistili dĺžku, môžete otvoriť len dostatočne veľký buffer a počkať, kým sa vygeneruje všetok obsah, než začnete počítať. Na jednej strane to však vyžaduje väčšiu pamäťovú záťaž a na druhej strane to spôsobí, že klient bude musieť čakať dlhšie.
  • Potrebujeme nový mechanizmus, ktorý nezávisí od dĺžky hlavičky a pozná hranice entít – Transfer-Encoding: chunked.

2. Prenosové kódovanie (rozdelené)

  • Transfer-Encoding je pole HTTP hlavičky (pole hlavičky odpovede), čo doslova znamená "kódovanie prenosu". Najnovšia špecifikácia HTTP definuje len jeden typ kódovacieho transportu: chunked.
  • Kódovanie prenosu v častiach je mechanizmus prenosu dát v protokole Hypertext Transfer Protocol (HTTP), ktorý umožňuje rozdeliť HTTP dáta posielané webovým serverom klientovi na viacero častí. Kódovanie blokového transportu je dostupné iba vo verzii HTTP protokolu 1.1 (HTTP/1.1).
  • Dáta sa rozkladajú na sériu blokov a odosielajú sa v jednej alebo viacerých častiach, aby server mohol posielať dáta bez toho, aby vopred vedel o celkovej veľkosti odoslaného obsahu.


Špecifické metódy

  • Po pridaní Transfer-Encoding: chunked do hlavičky znamená, že paket je chunkovaný. V tomto prípade je potrebné entity v pakete prenášať v sérii častí.
  • Každý chunk obsahuje hexadecimálnu hodnotu dĺžky a údaje, pričom hodnota dĺžky je exkluzívna pre jeden riadok, pričom dĺžka nezahŕňa CRLF na jeho konci ani CRLF na konci rozdelených dát.
  • Posledná hodnota dĺžky bloku musí byť 0 a zodpovedajúce dáta bloku neobsahujú, čo naznačuje koniec entity.




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







Predchádzajúci:Dĺžka obsahu protokolu Http
Budúci:Tri faktory, ktoré ma nútia Chrome odsudzovať
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com