Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 9827|Vastaus: 0

HTTP-protokollan siirto-koodaus (chunked)

[Kopioi linkki]
Julkaistu 24.9.2019 18.07.57 | | | |
1. Taustaa:

  • Pysyvät yhteysongelmat: Ei-pysyvissä yhteyksissä selain voi määritellä pyytävän tai vastaajan rajat sen mukaan, onko yhteys poissa vai ei; Jatkuvissa yhteyksissä tämä lähestymistapa ei tietenkään toimi. Joskus, vaikka olen lähettänyt kaiken datan, selain ei tiedä, tuleeko avoimesta yhteydestä uutta dataa, joten se vain odottaa.
  • Ratkaise sisällön pituudella: Laske entiteettien pituus ja kerro toiselle osapuolelle pään kautta. Selain voi päätellä, että vastausentiteetti on ohi, Content-Lengthin pituustiedon perusteella
  • Uusi ongelma Content-lengthin kanssa: Koska Content-Length-kentän täytyy todella heijastaa entiteettien pituutta, pituutta ei tiedetä dynaamisesti tuotetulle sisällölle ennen kuin sisältö on luotu. Tällä hetkellä, jotta saat pituuden tarkasti, voit avata vain tarpeeksi suuren puskurin ja odottaa, että kaikki sisältö on generoitu ennen laskemista. Tämä kuitenkin vaatii toisaalta enemmän muistikuormaa, ja toisaalta se saa asiakkaan odottamaan pidempään.
  • Tarvitsemme uuden mekanismin, joka ei perustu otsikon pituuteen ja tuntee entiteettien rajat – Transfer-Encoding: chunked.

2. Siirtokoodaus (lohkottu)

  • Transfer-Encoding on HTTP-otsikkokenttä (vastausotsikkokenttä), joka tarkoittaa kirjaimellisesti "siirtokoodausta". Uusin HTTP-määrittely määrittelee vain yhden koodaussiirron tyypin: chunked.
  • Chunked transfer encoding on Hypertext Transfer Protocolin (HTTP) datansiirtomekanismi, joka mahdollistaa web-palvelimen asiakkaalle lähettämän HTTP-datan jakamisen useisiin osiin. Lohkosiirtokoodaus on saatavilla vain HTTP-protokollan versiossa 1.1 (HTTP/1.1).
  • Data jaetaan sarjaan lohkoja ja lähetetään yhdessä tai useammassa lohkossa, jotta palvelin voi lähettää dataa tietämättä etukäteen lähetetyn sisällön kokonaiskokoa.


Erityiset menetelmät

  • Kun lisätään Transfer-Encoding: chunked otsikkoon, se tarkoittaa, että paketti on chunked. Tässä tapauksessa paketin entiteetit täytyy lähettää sarjana lohkoja.
  • Jokainen lohko sisältää heksadesimaalipituusarvon ja datan, ja pituusarvo on yksinomaan yhdelle riville, eikä pituus sisällä CRLF:ää sen lopussa eikä CRLF:ää lohkotun datan lopussa.
  • Viimeisen chunk-pituuden arvon täytyy olla 0, ja vastaavalla chunk-datalla ei ole sisältöä, mikä osoittaa entiteemin lopun.




asp.net Ydintestikoodi:







Edellinen:Http-protokollan sisältö-pituus
Seuraava:Kolme tekijää, jotka saavat minut vähättelemään Chromea
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com