name keywords description content http http-headers

http - description - meta keywords



Establecer más de un encabezado HTTP con el mismo nombre? (6)

Como está buscando casos de uso, tal vez Accept sería válido.

  • Aceptar: aplicación / json
  • Aceptar: application / xml

Hasta donde yo sé, la especificación HTTP permite establecer más de un encabezado HTTP con el mismo nombre. ¿Hay algún caso de uso para hacerlo (de cliente a servidor y viceversa)?

HTTP 1.1 Sección 4.2 :

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.

Si no estoy equivocado, no hay ningún caso en el que se necesiten varios encabezados con el mismo nombre.


Dado que los encabezados duplicados pueden causar problemas con varios servidores web y API (independientemente de lo que diga la especificación), dudo que haya un caso de uso de propósito general en el que esta sea la mejor práctica. Eso no quiere decir que alguien en algún lado no lo esté haciendo, por supuesto.


En mi humilde opinión, solo aquellos encabezados, cuyo valor puede ser expresado (definido) con coma separado, se pueden escribir en múltiples encabezados con valores únicos o múltiples.

Digamos que tenemos un encabezado cuyo valor se puede escribir en una lista separada por comas.

Entries-In-Order: Jane,John,Charlie

Ese valor de encabezado es válido por su definición y el servidor o el cliente lo sabe . Y luego podemos separarlo como

Entries-In-Order: Jane,John Entries-In-Order: Charlie

Pero cualquier encabezado no comprende que el valor separado por comas no se puede escribir en múltiples.

Who-Are-Responsible: John, Jane or maybe Charlie?

Si, por definición, el servidor o el cliente pueden manejar toda la cadena ( John,Jane,maybe Charlie? ) Como un valor único, escribirlo como encabezados múltiples no funcionará como se esperaba.

My-Dummy-Header: John My-Dummy-header: Jane or maybe Charlie?


Se usa comúnmente para Set-Cookie: Muchos servidores configuran más de una cookie.

Por supuesto, siempre puede configurarlos en un solo encabezado.

En realidad, creo que no puedes establecer múltiples cookies en un encabezado. Entonces ese es un caso de uso necesario.

La especificación Cookie afirma que puede combinar varias cookies en un encabezado de la misma manera que otros encabezados se pueden combinar (separados por comas), pero también señala que las sintaxis no conformes (como el parámetro Expires , que tiene , s en su valor) todavía son comunes y deben ser tratados por implementaciones.

Por lo tanto, si usa los parámetros Expires en sus encabezados Set-Cookie y no desea que todas sus cookies caduquen al mismo tiempo, es probable que necesite usar varios encabezados.



Viejo hilo, pero estaba investigando el mismo problema. De todos modos, los encabezados Accept y Accept-Encoding son ejemplos típicos que usan valores múltiples, separados por comas. Incluso si estos son encabezado específico de solicitud, las especificaciones no diferencian entre solicitud y respuesta en este nivel. Marque el de esta página. Lo que dice la especificación es que si tiene comas como carácter en el valor del encabezado, no puede usar múltiples encabezados del mismo nombre, a menos que desambigué el uso de la coma.