2010-06-22 13 views

Respuesta

67

usted querrá echar un vistazo a la especificación HTTP RFC 2616 donde dice:

múltiples campos de cabecera de mensaje con el mismo nombre de campo se MAYO presente en un mensaje si y solo si el valor de campo completo para ese campo de encabezado es definido como una lista separada por comas [es decir, # (valores)]. TIENE que ser posible para combinar los múltiples campos de cabecera en uno "-nombre de campo: campo-valor" par, sin cambiar la semántica del mensaje, añadiendo cada subsiguiente campo-valor a la primera, cada uno separado por una coma por lo tanto El orden en el que se reciben campos de cabecera con el mismo nombre de campo es importante para la interpretación de el valor del campo combinado, y por lo tanto un proxy no debe cambiar el orden de estos valores de campo cuando un mensaje es reenviado.

Lo que esto significa es que puede enviar el mismo encabezado varias veces en una respuesta con diferentes valores, siempre que esos valores se puedan agregar el uno al otro mediante una coma. Esto también significa que puede enviar múltiples valores en un solo encabezado al concatenarlos con comas.

Así que en su caso será:

Key: value1,value2,value3 
+8

puede enviar el mismo encabezado varias veces en una respuesta con diferentes valores de a * si y sólo si se define la totalidad del valor de campo para ese campo de cabecera como una lista separada por comas *. Creo que esto se refiere al hecho de que no todos los encabezados pueden ser un conjunto de valores. Por ejemplo, Content-Length debe ser un valor único. – Cheeso

+0

@ marc-novakowski - también deseo tener unas palabras en este thema :) - No, baje la votación, pero dejándolo con la sensación de que estoy "insatisfecho" – ceph3us

+0

¿Qué pasa si dos valores conflictivos se envían en el mismo encabezado? Por ejemplo: "X-Frame-Options: DENY, SAMEORIGIN". ¿Cómo debería el navegador procesarlo? Obtener el último? – drox

4

por todos los medios @ Marc-novakowski que el estrechamiento del "problema" :)

normalmente (por especificación HTTP) que delimitan cada valor de las otras personas que utilizan una coma ''

pero vamos a examinar un caso simple:

Cookie-set: language=pl; expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com 
Cookie-set: id=123 expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com; httponly 

¿cómo se une a dichos encabezados cuando los valores uno del otro están delimitados con comas - caso en que el coma puede aparecer ???

entonces la responsabilidad "cliente" es elegir y decidir la estrategia por ejemplo gota, Merg (si merg cómo)?

peticiones toman vistazo a la aplicación de Mozilla de nsHttpHeaderArray

https://github.com/bnoordhuis/mozilla-central/blob/master/netwerk/protocol/http/nsHttpHeaderArray.h#L185

Mozilla optan por utilizar un delimitador nueva línea '\ n' en este caso (para ciertos campos de cabecera nombres)

Animo cuando se enfrenta a una situación de este tipo para buscar soluciones comunes existentes, como y proporciona un esquema familiar

2

Sin embargo, no todos los valores con el mismo nombre de campo se pueden combinar en la lista de valores de campo. Por ejemplo, en RFC 7230 podemos leer

Nota: En la práctica, el "Set-Cookie" campo de cabecera ([RFC6265]) a menudo aparece varias veces en un mensaje de respuesta y no utiliza la sintaxis lista, violando los requisitos anteriores en múltiples campos de encabezado con el mismo nombre. Dado que no se puede combinar en un valor de campo único , los destinatarios deben manejar "Set-Cookie" como un caso especial al procesar los campos del encabezado. (Véase el Apéndice A.2.3 de [Kri2001] para más detalles.)

Cuestiones relacionadas