127 votes

Double-Têtes de Réponse HTTP acceptable?

Je n'ai pas trouvé aucune spécification quant à savoir si double-têtes de réponse HTTP est autorisé par la norme, mais j'ai besoin de savoir si cela va entraîner des problèmes de compatibilité.

Dire que j'ai un en-tête de réponse comme ceci:

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5
Cache-Control: no-cache
Cache-Control: no-store
Location: http://localhost:9876/foo.bar
Content-Language: en-US
Content-Length: 0
Date: Mon, 06 Dec 2010 21:18:26 GMT

Notez qu'il existe deux Cache-Control-têtes avec des valeurs différentes. Les navigateurs toujours les traiter comme si elles sont écrites comme "Cache-Control: no-cache, no-store"?

Merci.

Su

167voto

Simon Mourier Points 49585

HTTP RFC2616 disponible ici dit:

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 la valeur de cet en-tête le champ 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 de l' message, en ajoutant par la suite, chaque champ de valeur pour le premier, chaque 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 la combinaison de la valeur du champ, et donc un proxy ne DOIT PAS changer la l'ordre de ces valeurs de champ lorsqu'un message est transmis

Ainsi, plusieurs en-têtes avec le même nom est ok (www-authenticate dans ce cas) si la totalité du champ de valeur est définie comme une liste séparée par des virgules de valeurs.

Cache-control est documenté ici: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 comme ceci:

Cache-Control   = "Cache-Control" ":" 1#cache-directive

L' #1cache-directive syntaxe définit une liste d'au moins un cache-directive éléments (voir ici pour la définition formelle des #valeurs: Notation des Conventions et des Génériques de Grammaire)

Donc, oui,

Cache-Control: no-cache, no-store

est équivalent à (l'ordre est important)

Cache-Control: no-cache
Cache-Control: no-store

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