Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 9827|Odgovoriti: 0

HTTP protokol Transfer-Encoding (razdeljen na dele)

[Kopiraj povezavo]
Objavljeno na 24. 09. 2019 18:07:57 | | | |
1. Ozadje:

  • Vztrajne težave s povezavo: Pri netrajnih povezavah lahko brskalnik določi meje entitete, ki zahteva ali odgovori, glede na to, ali je povezava prekinjena ali ne; Pri neprekinjenih povezavah ta pristop očitno ne deluje. Včasih, čeprav sem poslal vse podatke, brskalnik ne ve, ali bodo na odprti povezavi prihajali novi podatki, zato preprosto čaka.
  • Reši z dolžino vsebine: Izračunaj dolžino entitete in drugi strani povej preko glave. Brskalnik lahko ugotovi, da je entiteta odgovora over glede na dolžino vsebine
  • Nova težava z dolžino vsebine: Ker mora polje Vsebina-dolžina resnično odražati dolžino entitete, dolžina za dinamično generirano vsebino ni znana, dokler vsebina ni ustvarjena. Trenutno, da natančno določite dolžino, lahko odprete le dovolj velik medpomnilnik in počakate, da se vsa vsebina ustvari, preden začnete izračunavati. Vendar to zahteva več pomnilniškega bremena na eni strani, po drugi strani pa bo odjemalec dlje čakal.
  • Potrebujemo nov mehanizem, ki ne temelji na dolžini glave in pozna meje entitet – Transfer-Encoding: chunked.

2. Prenosno-kodiranje (razdeljeno)

  • Transfer-Encoding je polje HTTP glave (polje glave odziva), kar dobesedno pomeni "kodiranje prenosa". Najnovejša HTTP specifikacija definira le eno vrsto kodirnega transporta: delno (chunked).
  • Kodiranje prenosa v delih je mehanizem za prenos podatkov v protokolu Hypertext Transfer Protocol (HTTP), ki omogoča, da se HTTP podatki, ki jih spletni strežnik pošlje odjemalcu, razdelijo na več delov. Kodiranje s transportom blokov je na voljo le v različici HTTP protokola 1.1 (HTTP/1.1).
  • Podatki se razdelijo na serijo kosov in pošljejo v enem ali več delih, da lahko strežnik pošilja podatke, ne da bi vnaprej poznal skupno velikost poslane vsebine.


Specifične metode

  • Po dodajanju Transfer-Encoding: v glavo pomeni, da je paket razdeljen na dele. V tem primeru je treba entitete v paketu prenesti v seriji kosov.
  • Vsak del vsebuje šestnajstiško vrednost dolžine in podatke, pri čemer je vrednost dolžine omejena na eno vrstico, dolžina pa ne vključuje CRLF na koncu in ne CRLF na koncu razdeljenih podatkov.
  • Zadnja vrednost dolžine kosa mora biti 0, ustrezni podatki o kosu pa nimajo vsebine, kar označuje konec entitete.




asp.net Osnovna testna koda:







Prejšnji:Vsebinska dolžina http protokola
Naslednji:Trije dejavniki, zaradi katerih odrivam Chrome
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com