type tutorial length headers enviar definicion data content cabeceras accept http-headers

http-headers - tutorial - http headers post



¿Son aceptables los encabezados de respuesta HTTP duplicados? (1)

No he encontrado ninguna especificación sobre si la norma permite encabezados de respuesta HTTP duplicados, pero necesito saber si esto causará problemas de compatibilidad.

Digamos que tengo un encabezado de respuesta como este:

HTTP/1.1 302 Moved Temporarily Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5 Cache-Control: no-cache Cache-Control: no-store Location: http://localhost:9876/foo.bar Content-Language: en-US Content-Length: 0 Date: Mon, 06 Dec 2010 21:18:26 GMT

Tenga en cuenta que hay dos encabezados de Cache-Control con diferentes valores. ¿Los navegadores siempre los tratan como si estuvieran escritos como "Cache-Control: no-cache, no-store"?

Gracias.

Su


HTTP RFC2616 disponible here dice:

Múltiples campos de encabezado de mensaje con el mismo nombre de campo PUEDEN estar presentes en un mensaje si y solo si el valor de campo completo para ese campo de encabezado está definido como una lista separada por comas [es decir, # (valores)]. DEBE ser posible combinar los múltiples campos de encabezado en un par de "nombre de campo: valor de campo", sin cambiar la semántica del mensaje, agregando cada valor de campo subsiguiente al primero, cada uno separado por una coma. El orden en que se reciben los campos de encabezado con el mismo nombre de campo es, por lo tanto, significativo para la interpretación del valor de campo combinado y, por lo tanto, un proxy NO DEBE cambiar el orden de estos valores de campo cuando se reenvía un mensaje.

Por lo tanto, múltiples encabezados con el mismo nombre están bien (www-authenticate es un caso así) si todo el valor de campo se define como una lista de valores separados por comas.

El control de caché está documentado aquí: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 así:

Cache-Control = "Cache-Control" ":" 1#cache-directive

La #1cache-directive define una lista de al menos un elemento de directivas de caché (consulte aquí la definición formal de #values: Convenciones de notación y gramática genérica )

Entonces sí,

Cache-Control: no-cache, no-store

es equivalente a (el orden es importante)

Cache-Control: no-cache Cache-Control: no-store