Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 9827|Válasz: 0

HTTP protokoll Átvitel-kódolás (darabos)

[Linket másol]
Közzétéve 2019. 09. 24. 18:07:57 | | | |
1. Háttér:

  • Tartós kapcsolati problémák: Nem tartós kapcsolatok esetén a böngésző meghatározhatja a kérő vagy válasz entitás határait annak alapján, hogy a kapcsolat leáll-e vagy sem; Folyamatos kapcsolatoknál ez a megközelítés nyilvánvalóan nem működik. Néha, bár elküldtem az összes adatot, a böngésző nem tudja, hogy jön-e új adat a nyitott kapcsolaton, így csak vár.
  • Oldd meg a tartalomhosszsal: Számold ki az entitás hosszát, és mondd el a másik félnek a fejen keresztül. A böngésző a Tartalom-Hossz hosszának információja alapján tudja megállapítani, hogy a válasz entitás vége van
  • Új probléma a tartalomhosszal: Mivel a tartalomhossz mezőnek valóban tükröznie kell az entitás hosszát, a dinamikusan generált tartalom hossza ismeretlen, amíg a tartalom el nem jön létre. Ekkor, hogy pontosan megkapd a hosszt, csak elég nagy puffert nyithatsz, és megvárod, hogy az összes tartalom generálódjon, mielőtt kiszámítanád. Ez azonban egyrészt több memóriaigényt igényel, másrészt pedig tovább várakozik a kliensnek.
  • Olyan új mechanizmusra van szükségünk, amely nem a fejléc hosszán alapul, és ismeri az entitások határait – Transfer-Encoding: chunked.

2. Átvitel-kódolás (darabokban)

  • A transzfer-kódolás egy HTTP fejlécmező (válaszfejléc-mező), ami szó szerint "átviteli kódolást" jelent. A legújabb HTTP specifikáció csak egy kódolási szállítási típust határoz meg: chunked.
  • A chunked transfer kódolás egy adatátviteli mechanizmus a Hypertext Transfer Protocolban (HTTP), amely lehetővé teszi, hogy a webszerver által a kliensnek küldött HTTP adatokat több részre bontsa. A blokkszállítás kódolása csak a HTTP protokoll 1.1-es verziójában (HTTP/1.1) érhető el.
  • Az adatokat egy sor darabokra bontják, és egy vagy több darabban küldik, hogy a szerver anélkül tudná előre a küldött tartalom teljes méretét.


Specifikus módszerek

  • Miután hozzáadjuk a Transfer-Encoding: chunked a fejléchez, az azt jelenti, hogy a csomag darabolt van. Ebben az esetben a csomagban lévő entitásokat inkább egy sor darabban kell továbbítani.
  • Minden darab tartalmazza a hexadecimális hosszúságértéket és az adatokat, és a hosszérték kizárólag egy sorra vonatkozik, és a hossz nem tartalmazza a CRLF-et a végén lévő CRLF-et, sem a darabolt adatok végén lévő CRLF-et.
  • Az utolsó chunk hossz értéknek 0-nak kell lennie, és a megfelelő chunk adatnak nincs tartalma, ami az entitás végét jelzi.




asp.net Core tesztkód:







Előző:A Http protokoll tartalmi hossza
Következő:Három tényező, ami miatt elutasítom a Chrome-ot
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com