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: 8759|Respuesta: 0

Interpretación detallada de la longitud de contenido en el protocolo HTTP

[Copiar enlace]
Publicado en 24/9/2019 15:53:29 | | |
Longitud de contenido se utiliza para describir la longitud de transferencia del cuerpo del mensaje. En el protocolo HTTP, existe una diferencia entre la longitud de la entidad del mensaje y la longitud de transmisión de la entidad del mensaje; por ejemplo, bajo la compresión gzip, la longitud de la entidad del mensaje es la longitud antes de la compresión, y la longitud de transmisión de la entidad del mensaje es la longitud después de la compresión gzip.

En interacciones HTTP específicas, la forma en que el cliente obtiene la longitud del mensaje se basa principalmente en las siguientes reglas:

Si la respuesta es 1xx, 204, 304 o la solicitud principal, el contenido de la entidad del mensaje se ignora directamente.
Si existe Transfer-Encoding, se prefiere el método en Transfer-Encoding para encontrar la longitud correspondiente. Por ejemplo, el modelo Chunked.
"Si hay una Longitud de Contenido en la cabeza, entonces esta Longitud de Contenido representa tanto la longitud del cuerpo como la longitud de transmisión. Si la longitud de la entidad y la longitud de transferencia no son iguales (por ejemplo, se establece la codificación de transferencia), entonces la longitud de contenido no puede establecerse.Si se activa la Codificación de Transferencia, entonces se ignorará la longitud de contenido”。 La ventaja de esta traducción de oraciones es que solo hay un punto: con la codificación por transferencia, no puede haber longitud de contenido.
Transmisión de distancia. No presté atención, no lo leí en detalle :)
Cerrar la conexión a través del servidor determina la longitud del mensaje que se está transmitiendo. (El solicitante no puede indicar el final del cuerpo de la solicitud cerrando la conexión, ya que esto dejaría al servidor sin posibilidad de seguir respondiendo.) Esta situación corresponde principalmente a conexiones cortas, es decir, el modo no de mantener la vida.
HTTP 1.1 debe soportar modo chunk. Porque cuando la longitud del mensaje es incierta, esta situación puede gestionarse mediante el mecanismo de fragmentos.
En la cabecera que contiene el contenido del mensaje, si hay un campo de longitud de contenido, el valor correspondiente del campo debe coincidir exactamente con la longitud del tema del mensaje.
"La longitud de entidad de un mensaje es la longitud del cuerpo del mensaje antes de que se hayan aplicado codificaciones de transferencia"
Es decirSi hay un fragmento, no puede haber longitud de contenido

El mecanismo de conexión persistente de HTTP/1.0 se introdujo más tarde y se implementa a través del encabezado Connection: keep-alive, que puede ser utilizado tanto por el servidor como por el cliente para indicarse mutuamente que no necesitan desconectar la conexión TCP tras enviar los datos para su uso posterior.HTTP/1.1 requiere que todas las conexiones sean persistentesA menos que añadas explícitamente Conexión: cerca del encabezado。 Así que, de hecho, el campo de cabecera Connection en HTTP/1.1 ya no tiene el valor de keep-alive, pero por razones históricas, muchos servidores web y navegadores aún mantienen el hábito de enviar conexiones largas de Connection: keep-alive a HTTP/1.1.

De hecho, los últimos pueden casi ignorarse, y un breve resumen es el siguiente:


1. Longitud del contenido: Si existe y es válida, debe ser exactamente igual que la longitud de transmisión del contenido del mensaje. (Probado para acortar si es demasiado corto y demasiado largo para causar un tiempo muerto.) )
2. Si existe Codificación de Transferencia (el enfoque está fragmentado), no puede haber Longitud de Contenido en el encabezado y será ignorado.
3. Si se utiliza una conexión corta, la longitud de transmisión del mensaje puede determinarse directamente cerrando la conexión a través del servidor. (Esto es fácil de entender)
Combinado con otras características del protocolo HTTP, por ejemplo, Http1.1 no soportaba mantener activo. A continuación, se pueden extraer las siguientes conclusiones:
1. En Http 1.0 y versiones anteriores, el campo de longitud de contenido es opcional.
2. En http1.1 y versiones posteriores. Si sigues vivo, entonces contenido y fragmento deben ser uno de los dos. Si no se mantiene vivo, es igual que http1.0. contenido extenso.





Anterior:"Node.js: Let's Dozen C++ Extensions" versión escaneada en pdf [146MB]
Próximo:Longitud de contenido del protocolo Http
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