Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 9827|Antwoord: 0

HTTP-protocol Transfer-Encoding (gehuld)

[Link kopiëren]
Geplaatst op 24-09-2019 18:07:57 | | | |
1. Achtergrond:

  • Persistente verbindingsproblemen: Voor niet-persistente verbindingen kan de browser de grenzen van de verzoekende of responsentiteit definiëren door of de verbinding offline is of niet; Voor continue verbindingen werkt deze aanpak uiteraard niet. Soms, hoewel ik alle data heb verstuurd, weet de browser niet of er nieuwe data binnenkomt via de open verbinding, dus wacht hij gewoon.
  • Los op met inhoud-lengte: Bereken de entiteitslengte en vertel het de andere partij via het hoofd. De browser kan zien dat de responsentiteit over is aan de hand van de lengte-informatie van de Content-Length
  • Nieuw probleem met Content-length: Omdat het Content-Length-veld echt de entiteitslengte moet weergeven, is de lengte onbekend voor dynamisch gegenereerde content totdat de content is aangemaakt. Op dit moment kun je om de lengte nauwkeurig te krijgen alleen een grote buffer openen en wachten tot alle inhoud is gegenereerd voordat je berekent. Dit vereist echter enerzijds meer geheugenoverhead, en anderzijds zal het de cliënt langer laten wachten.
  • We hebben een nieuw mechanisme nodig dat niet afhankelijk is van de lengte van de header en de grenzen van entiteiten kent - Transfer-Encoding: chunked.

2. Overdracht-codering (gehuld)

  • Transfer-Encoding is een HTTP-headerveld (response headerveld), wat letterlijk "overdrachtscodering" betekent. De nieuwste HTTP-specificatie definieert slechts één type coderingstransport: chunked.
  • Chunked transfer encoding is een gegevensoverdrachtsmechanisme in het Hypertext Transfer Protocol (HTTP) waarmee HTTP-gegevens die door een webserver naar de client worden verzonden, kunnen worden verdeeld in meerdere delen. Bloktransportcodering is alleen beschikbaar in HTTP-protocol versie 1.1 (HTTP/1.1).
  • Data wordt opgesplitst in een reeks chunks en in één of meer chunks verzonden, zodat de server data kan verzenden zonder vooraf de totale omvang van de verzonden content te kennen.


Specifieke methoden

  • Na het toevoegen van Transfer-Encoding: chunked aan de header betekent dit dat het pakket chunked is. In dit geval moeten de entiteiten in het pakket in plaats daarvan in een reeks chunks worden verzonden.
  • Elke chunk bevat de hexadecimale lengtewaarde en data, en de lengtewaarde is exclusief voor één regel, waarbij de lengte niet de CRLF aan het einde bevat, noch de CRLF aan het einde van de chunked data.
  • De waarde van de laatste chunklengte moet 0 zijn, en de bijbehorende chunkgegevens hebben geen inhoud, wat het einde van de entiteit aangeeft.




asp.net Kerntestcode:







Vorig:Inhoudslengte van het Http-protocol
Volgend:Drie factoren waardoor ik Chrome afkeur
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com