traduccion example disable http chunked-encoding chunking http-chunked

example - HTTP Chunked Encoding. Necesita un ejemplo de ''Trailer'' mencionado en SPEC



transfer-encoding chunked example (3)

Estoy escribiendo un analizador HTTP para un proxy transparente. Lo que me sorprende es el Trailer: mencionado en las especificaciones de Transfer-Encoding: chunked . Cómo se ve?

Normalmente, un HTTP fragmentado termina de esta manera.

0/r/n /r/n

Estoy confundido sobre cómo detectar el final del fragmento si hay algún tipo de encabezados finales ...

ACTUALIZACIÓN: Creo que una simple /r/n/r/n es decir, una línea vacía es suficiente para detectar el final de los encabezados finales ... ¿Es eso correcto?


0 / r / n
SomeAfterHeader: TheData / r / n
/ r / n

En otras palabras, es suficiente buscar una /r/n/r/n , en términos simples: una línea en blanco . Para detectar el final de una transmisión fragmentada. Pero es muy importante que cada parte se lea antes de hacer esto. Debido a que los datos fragmentados en sí mismos pueden contener líneas en blanco que se detectarán erróneamente como el final de la secuencia.


A continuación se muestra una copia de un ejemplo de avance que copié del sitio de la Guía TCP / IP .

Como podemos ver, si queremos usar el encabezado del trailer, necesitamos agregar un campo de encabezado "Trailer: header_name" con un nombre de encabezado y luego agregar la entidad del encabezado del trailer después del área del cuerpo fragmentado.

Podemos agregar 0 o más encabezados de tráiler en un cuerpo HTTP según el RFC. La Sección 4.1.2 de RFC7230 prohíbe el uso de los siguientes encabezados en el área de encabezado del remolque:

Un remitente NO DEBE generar un tráiler que contenga un campo necesario para el enmarcado de mensajes (por ejemplo, Transferencia-Codificación y Contenido-Longitud), enrutamiento (por ejemplo, Host), modificadores de solicitud (por ejemplo, controles y condicionales en la Sección 5 de RFC7231 ), autenticación (por ejemplo, consulte RFC7235 y RFC6265 ), datos de control de respuesta (por ejemplo, consulte la Sección 7.1 de RFC7231 ), o determine cómo procesar la carga útil (por ejemplo, Codificación de contenido, Tipo de contenido, Rango de contenido y Remolque).

Esto significa que podemos usar otros encabezados estándar y encabezados personalizados en el área del encabezado del remolque.


Respecto al trailer:

La lista de encabezados finales se debe especificar en el encabezado del Remolque, como se indica.

El BNF en la Sección 14.40 de RFC 2616 es este:

Trailer = "Trailer" ":" 1#field-name

Gourley y Totty dan este ejemplo:

Trailer: Content-Length

(Es extraño que den este ejemplo, ya que Content-Length está explícitamente prohibido ser un encabezado final en 14.40).

Shiflett da este ejemplo:

Trailer: Date

Con respecto al final del mensaje con encabezados finales:

El BNF en la Sección 3.6.1 de RFC 2616 es lo que está buscando. Aquí está la parte:

Chunked-Body = *chunk last-chunk trailer CRLF last-chunk = 1*("0") [ chunk-extension ] CRLF trailer = *(entity-header CRLF)

Por lo tanto, el último fragmento y los dos encabezados finales podrían tener este aspecto:

0<CRLF> Date:Sun, 06 Nov 1994 08:49:37 GMT<CRLF> Content-MD5:1B2M2Y8AsgTpgAmY7PhCfg==<CRLF> <CRLF>