2010-01-19 7 views
5

¿Existe un orden en particular en PHP para establecer encabezados HTTP con la función de encabezado()?Pregunta de orden de encabezado en PHP (y HTTP en general)

Quiero decir, por ejemplo, debo llamar al encabezado ('Content-Language: en'); antes del encabezado ('Content-Type: text/plain'); o lo que sea que el orden esté bien.

Mi conjetura es que el orden no es importante, siempre y cuando todo lo que las cabeceras se establecen antes de cualquier contenido emite, pero sólo quiero estar seguro de que es el caso ...

Respuesta

8

No, el order of the header fields no lo hace materia:

El orden en que se reciben los campos de encabezado con nombres de campo diferentes no es significativo. Sin embargo, es una "buena práctica" enviar primero los campos de encabezado general, seguidos por los campos de encabezado de solicitud o encabezado de respuesta, y terminando con los campos de encabezado de entidad.

Solo si está enviando varios campos con el mismo nombre. Entonces los valores de campo se tratan como aparecerían en una lista:

Varios campos de encabezado de mensaje con el mismo nombre de campo PUEDEN estar presentes en un mensaje si y solo si todo el campo-valor para ese campo de encabezado se define como una lista separada por comas [es decir, #(values)]. 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.

Así las siguientes:

Cache-Control: private 
Cache-Control: must-revalidate 

sería equivalente a:

Cache-Control: private, must-revalidate 

Y aquí depende de la definición del campo de cabecera (aquí Cache-Control) si el el orden sí importa

4

El orden en que se reciben los campos de encabezado con diferentes nombres de campo no es significativo. Sin embargo, es una "buena práctica" enviar primero los campos de encabezado general, seguidos por los campos de encabezado de solicitud o encabezado de respuesta, y terminando con los campos de encabezado de entidad.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 (Hypertext Transfer Protocol - HTTP/1.1)