Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 9827|Risposta: 0

Protocollo HTTP Transfer-Encoding (a squam)

[Copiato link]
Pubblicato su 24/09/2019 18:07:57 | | | |
1. Contesto:

  • Problemi di connessione persistenti: Per connessioni non persistenti, il browser può definire i confini dell'entità richiedente o di risposta in base al fatto che la connessione sia fuori uso o meno; Per connessioni continue, questo approccio ovviamente non funziona. A volte, anche se ho inviato tutti i dati, il browser non sa se arriveranno nuovi dati dalla connessione aperta, quindi aspetta semplicemente.
  • Risolvi con la lunghezza del contenuto: Calcola la lunghezza dell'entità e comunica all'altra parte attraverso la testa. Il browser può capire che l'entità di risposta è over tramite l'informazione sulla lunghezza della Contenuto
  • Nuovo problema con la lunghezza del contenuto: poiché il campo Lunghezza del contenuto deve riflettere veramente la lunghezza dell'entità, la lunghezza è sconosciuta per i contenuti generati dinamicamente fino alla creazione del contenuto. Al momento, per ottenere la lunghezza con precisione, puoi aprire solo un buffer abbastanza grande e aspettare che tutto il contenuto venga generato prima di calcolare. Tuttavia, questo richiede più overhead di memoria da un lato, dall'altro fa aspettare il client più a lungo.
  • Abbiamo bisogno di un nuovo meccanismo che non si affidi alla lunghezza dell'intestazione e conosca i confini delle entità - Transfer-Encoding: a squam.

2. Codifica di trasferimento (a blocchi)

  • Transfer-Encoding è un campo di intestazione HTTP (campo di intestazione di risposta), che letteralmente significa "codifica di trasferimento". L'ultima specifica HTTP definisce un solo tipo di trasporto di codifica: a blocchi.
  • La codifica a blocchi è un meccanismo di trasferimento dati nel Protocollo di Trasferimento Ipertesto (HTTP) che consente di suddividere i dati HTTP inviati da un server web al client in più parti. La codifica del trasporto a blocchi è disponibile solo nella versione 1.1 del protocollo HTTP (HTTP/1.1).
  • I dati vengono suddivisi in una serie di blocchi e inviati in uno o più blocchi in modo che il server possa inviare dati senza conoscere in anticipo la dimensione totale del contenuto inviato.


Metodi specifici

  • Dopo aver aggiunto Transfer-Encoding: a pezzi nell'header, significa che il pacchetto è bloccato. In questo caso, le entità nel pacchetto devono essere trasmesse in una serie di blocchi.
  • Ogni blocco contiene il valore della lunghezza esadecimale e i dati, e il valore della lunghezza è esclusivo di una riga, e la lunghezza non include il CRLF alla fine, né il CRLF alla fine dei dati a blocchi.
  • Il valore della lunghezza dell'ultimo chunk deve essere 0, e i dati del chunk corrispondenti non hanno contenuto, indicando la fine dell'entità.




asp.net Codice base del test:







Precedente:Contenuto di lunghezza del protocollo Http
Prossimo:Tre fattori che mi fanno sminuire Chrome
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com