2009-05-26 5 views
7

No puedo decir desde RFC 2616 si un cliente HTTP debe aceptar una respuesta 204 Sin contenido que incluye Content-Length: 0 o Transfer-Encoding: hechged headers. Estas cabeceras parecen romper algunos clientes HTTP y servidores proxy, que al parecer intento de leer el cuerpo de la respuesta vacía, pero the spec reads:¿Se ha roto una aplicación HTTP que envía Content-Length o Transfer-Encoding con 204 Sin contenido?

  1. Cualquier mensaje de respuesta, que "no debe" incluir un mensaje de cuerpo (como la 1xx, 204 y 304 respuestas y cualquier respuesta a una solicitud HEAD) es terminada siempre por la primera línea vacía después de los campos de encabezado, independientemente de los campos de encabezado de entidad presentes en el mensaje.

Para mí "independientemente de los campos de cabecera entidad" implica que los clientes deben tolerar este estado de cosas. El Erlang HTTP library eligió esta interpretación. Sin embargo, lighthttpd y IBM eligieron la interpretación opuesta: que el servidor no debe incluir estos encabezados para las respuestas que tienen prohibido tener cuerpos.

Entonces, ¿debería la aplicación web eliminar esos encabezados de la respuesta, o la infraestructura de red y los clientes deben tolerar esos encabezados en 204 Sin contenido, 304 No modificado, etc.?

Respuesta

6

De acuerdo con la RFC7230 (consulte http://tools.ietf.org/html/rfc7230#section-3.3.1) al final de la página 29 se afirma:

Un servidor no debe enviar un campo de encabezado Transfer-Encoding en cualquier respuesta con un código de estado de 1xx (Informativo) o 204 (No Contenido).

Por lo tanto, la aplicación web no debe enviar esos encabezados con la respuesta.

+0

Bien, seis años después, ¡tienes la respuesta correcta! –

2

No puedo decirte lo que es correcto, ya que no conozco el protocolo HTTP con ese detalle.

Sin embargo, usted tiene que preguntarse:

  1. ¿Puedo cambiar mi solicitud para eliminar esas cabeceras?
  2. o puedo cambiar los consumidores de mi aplicación para ignorar esos encabezados?

En mi opinión, la aplicación no debería enviar esos encabezados en ese caso.

Cuestiones relacionadas