Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 9827|Antwort: 0

HTTP-Protokoll Transfer-Encoding (gechunked)

[Link kopieren]
Veröffentlicht am 24.09.2019 18:07:57 | | | |
1. Hintergrund:

  • Persistente Verbindungsprobleme: Bei nicht-persistenten Verbindungen kann der Browser die Grenzen der anfordernden oder antwortenden Entität dadurch definieren, ob die Verbindung ausgefallen ist oder nicht; Für kontinuierliche Verbindungen funktioniert dieser Ansatz offensichtlich nicht. Manchmal, obwohl ich alle Daten gesendet habe, weiß der Browser nicht, ob neue Daten über die offene Verbindung eingehen, also wartet er einfach.
  • Lösen Sie mit Inhaltslänge: Berechnen Sie die Entitätslänge und informieren Sie die andere Partei über den Kopf. Der Browser kann anhand der Längeninformationen der Content-Length erkennen, dass die Antwort-Entität über ist.
  • Neues Problem mit der Inhaltslänge: Da das Feld Inhaltslänge wirklich die Entitätslänge widerspiegeln muss, ist die Länge für dynamisch generierte Inhalte unbekannt, bis der Inhalt erstellt ist. Um die Länge genau zu bestimmen, kann man derzeit nur einen ausreichend großen Puffer öffnen und warten, bis alle Inhalte generiert sind, bevor man berechnet. Dies erfordert jedoch einerseits mehr Speicheraufwand, andererseits lässt es den Client länger warten.
  • Wir brauchen einen neuen Mechanismus, der nicht auf die Länge des Headers angewiesen ist und die Grenzen der Entitäten kennt – Transfer-Encoding: chunked.

2. Transfer-Codierung (gehackt)

  • Transfer-Encoding ist ein HTTP-Headerfeld (Response Header-Feld), was wörtlich "Übertragungskodierung" bedeutet. Die neueste HTTP-Spezifikation definiert nur eine Art des Codierungstransports: chunked.
  • Die Chunked-Transfercodierung ist ein Datenübertragungsmechanismus im Hypertext Transfer Protocol (HTTP), der es ermöglicht, HTTP-Daten, die von einem Webserver an den Client gesendet werden, in mehrere Teile aufzuteilen. Blocktransportcodierung ist nur in HTTP-Protokollversion 1.1 (HTTP/1.1) verfügbar.
  • Die Daten werden in eine Reihe von Chunks zerlegt und in einem oder mehreren Chunks gesendet, sodass der Server Daten senden kann, ohne die Gesamtgröße des gesendeten Inhalts im Voraus zu kennen.


Spezifische Methoden

  • Nach dem Hinzufügen von Transfer-Encoding: chunked zum Header bedeutet das, dass das Paket chunked ist. In diesem Fall müssen die Entitäten im Paket stattdessen in einer Reihe von Chunks übertragen werden.
  • Jeder Chunk enthält den hexadezimalen Längenwert und die Daten, und der Längenwert ist exklusiv für eine Zeile; die Länge enthält weder das CRLF am Ende noch das CRLF am Ende der Chunk-Daten.
  • Der letzte Chunk-Längenwert muss 0 sein, und die entsprechenden Chunk-Daten enthalten keinen Inhalt, was das Ende der Entität anzeigt.




asp.net Kerntestcode:







Vorhergehend:Inhaltslänge des HTTP-Protokolls
Nächster:Drei Faktoren, die mich dazu bringen, Chrome abzulehnen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com