Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 9827|Respuesta: 0

Codificación de transferencia por protocolo HTTP (fragmentada)

[Copiar enlace]
Publicado en 24/9/2019 18:07:57 | | | |
1. Antecedentes:

  • Problemas de conexión persistente: Para conexiones no persistentes, el navegador puede definir los límites de la entidad solicitante o de respuesta según si la conexión está caída o no; Para conexiones continuas, este enfoque obviamente no funciona. A veces, aunque ya he enviado todos los datos, el navegador no sabe si llegarán nuevos datos por la conexión abierta, así que simplemente espera.
  • Resolver con longitud de contenido: Calcula la longitud de la entidad y indica a la otra parte a través de la cabeza. El navegador puede saber que la entidad de respuesta está sobre por la información de longitud de la Longitud de Contenido
  • Nuevo problema con la longitud del contenido: Dado que el campo longitud del contenido debe reflejar realmente la longitud de la entidad, la longitud es desconocida para contenido generado dinámicamente hasta que se crea el contenido. En este momento, para obtener la longitud con precisión, solo puedes abrir un búfer lo suficientemente grande y esperar a que se genere todo el contenido antes de calcular. Sin embargo, esto requiere más sobrecarga de memoria por un lado y, por otro, hará que el cliente espere más.
  • Necesitamos un nuevo mecanismo que no dependa de la longitud del encabezado y que conozca los límites de las entidades: Transfer-Encoding: chunked.

2. Codificación de transferencia (fragmentada)

  • Transfer-Encoding es un campo de cabecera HTTP (campo de cabecera de respuesta), que literalmente significa "codificación de transferencia". La última especificación HTTP define solo un tipo de transporte de codificación: fragmentado.
  • La codificación de transferencia por fragmentos es un mecanismo de transferencia de datos en el Protocolo de Transferencia de Hipertexto (HTTP) que permite dividir los datos HTTP enviados por un servidor web al cliente en múltiples partes. La codificación por transporte por bloques solo está disponible en el protocolo HTTP versión 1.1 (HTTP/1.1).
  • Los datos se desglosan en una serie de bloques y se envían en uno o más fragmentos para que el servidor pueda enviar datos sin conocer previamente el tamaño total del contenido enviado.


Métodos específicos

  • Después de añadir Transfer-Encoding: chunked al encabezado, significa que el paquete está en chunk. En este caso, las entidades del paquete deben transmitirse en una serie de bloques.
  • Cada fragmento contiene el valor de longitud hexadecimal y los datos, y el valor de longitud es exclusivo de una línea, y la longitud no incluye el CRLF al final de ella, ni el CRLF al final de los datos fragmentados.
  • El valor de la longitud del último fragmento debe ser 0, y los datos correspondientes del fragmento no tienen contenido, lo que indica el final de la entidad.




asp.net Código básico de prueba:







Anterior:Longitud de contenido del protocolo Http
Próximo:Tres factores que me hacen desestimar Chrome
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com