108 votes

Plusieurs en-têtes de cookies sont-ils autorisés dans une requête HTTP?

En général, un navigateur regroupe les cookies dans un en-tête unique Cookie , tel que:

 Cookie: a=1; b=2
 

La norme permet-elle d’envoyer ces éléments dans des en-têtes distincts, tels que:

 Cookie: a=1
Cookie: b=2
 

Ou doivent-ils toujours être sur la même ligne?

145voto

James Chong Points 563

Changé sur cette page en cherchant des détails sur le sujet. Une citation de HTTP State Management Mechanism , RFC 6265 devrait clarifier les choses:

5.4. L'en-tête de cookie

    When the user agent generates an HTTP request, the user agent MUST
   NOT attach more than one Cookie header field.
 

En fait, l'utilisation de plusieurs en-têtes Cookie est interdite!

9voto

Kylar Points 3435

EDIT: Comme l'a souligné, la réponse ci-dessous par James Chong est mieux, et selon les plus récents, les Specs. Je suis incapable de supprimer ma réponse, mais je ne veux pas que quiconque d'être induit en erreur!

En laissant au-dessous de la réponse pour la postérité.

VIEILLE RÉPONSE, PAS BON:

La partie pertinente de la spécification HTTP, RFC 2616, est comme suit:

Plusieurs message champs d'en-tête avec le même nom de zone PEUVENT être présents dans un message si et seulement si l'ensemble du champ de valeur pour ce champ d'en-tête est défini comme une liste séparée par des virgules [c'est à dire, #(valeurs)]. Il DOIT être possible de combiner les multiples champs d'en-tête dans un "champ-nom: domaine-de la valeur" paire, sans changer la sémantique du message, en ajoutant par la suite, chaque terrain de la valeur à la première, séparés par une virgule. L'ordre dans lequel les champs d'en-tête avec le même nom de zone sont reçus est donc important pour l'interprétation de la combinaison valeur d'un champ, et donc un proxy ne DOIT PAS modifier l'ordre de ces valeurs de champ lorsqu'un message est transmis.

Donc, pour répondre à votre question: Vous devriez faire ceci:

Cookie: a=1; b=2

Bien qu'il n'y a rien qui interdit expressément l'utilisation de plusieurs Cookie - têtes, dans la pratique, il n'est JAMAIS fait, parce qu'il existe un mécanisme spécifique pour le retour de plusieurs témoins dans un en-tête.

Cependant, l'inverse n'est pas vrai: les Serveurs souvent renvoie plusieurs Set-Cookie - têtes, l'une par cookie, et l' Cookie d'en-tête doit être retourné avec toutes les valeurs, dans l'ordre de parcours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X