2010-01-19 5 views
5

Existe-t-il un ordre particulier en PHP pour définir les en-têtes HTTP avec la fonction header()? Je veux dire par exemple dois-je appeler header ('Content-Language: en'); avant l'en-tête ('Content-Type: text/plain'); ou quel que soit l'ordre sera OK.Question d'ordre d'en-tête en PHP (et HTTP en général)

Je pense que l'ordre n'a pas d'importance tant que tout ce qu'il têtes sont paramétrés tout contenu émis, mais je veux juste être sûr que ce soit le cas ...

Répondre

8

Non, le order of the header fields ne le fait pas question:

L'ordre dans lequel les champs d'en-tête avec différents noms de champs sont reçus n'est pas significatif. Cependant, il est de "bonne pratique" d'envoyer les champs d'en-tête général en premier, suivis des champs d'en-tête de demande ou d'en-tête de réponse, et se terminant par les champs d'en-tête d'entité.

Seulement si vous envoyez plusieurs champs du même nom. Ensuite, les valeurs de champ sont traités comme ils apparaissent dans une liste:

Plusieurs champs-tête de message avec le même nom de champ peut être présent dans un message si et seulement si toute la valeur de champ pour ce champ d'en-tête est défini comme une liste séparée par des virgules [c.-à-d., #(values)]. Il DOIT être possible de combiner les multiples champs d'en-tête dans une paire "nom-champ: valeur-champ", sans changer la sémantique du message, en ajoutant chaque valeur-champ suivante à la première, chacune étant séparée par une virgule. L'ordre dans lequel les champs d'en-tête ayant le même nom de champ sont reçus est donc significatif pour l'interprétation de la valeur du champ combiné, et donc un mandataire NE DOIT PAS changer l'ordre de ces valeurs de champ lorsqu'un message est renvoyé.

donc les suivantes:

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

équivaudrait à:

Cache-Control: private, must-revalidate 

Et ici, il dépend de la définition du champ d'en-tête (ici Cache-Control) si la l'ordre a de l'importance.

4

L'ordre dans lequel les champs d'en-tête avec des noms de champ différents sont reçus n'est pas significatif. Cependant, il est de "bonne pratique" d'envoyer les champs d'en-tête général en premier, suivis des champs d'en-tête de demande ou d'en-tête de réponse, et se terminant par les champs d'en-tête d'entité.

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

Questions connexes