2009-09-06 8 views
0

J'ai un site derrière IIS et Enfold Proxy (un filtre de proxy inverse pour IIS), servi à partir de Plone (un CMS) via une pile WSGI. Les utilisateurs utilisent IE7.En quoi l'en-tête HTTP If-Modified-Since peut-il contenir deux dates séparées par des virgules?

D'une certaine manière, les demandes atteignent le serveur avec un If-Modified-Since comme ceci:

Jeu 27 août 2009 06:46:31 GMT, Jeu, 27 août 2009 06:46:31

Comme vous pouvez le voir, il y a deux dates ici (une avec un fuseau horaire, une sans fuseau horaire), séparées par des virgules.

Le code dans Plone est capable de gérer deux dates séparées par des points-virgules, mais ce format le provoque à barf. Bien que je puisse contourner ce problème, j'aimerais savoir d'où provient l'en-tête If-Modified-Since et comment il pourrait être délimité par des virgules au lieu d'être délimité par des points-virgules. Des idées?

Martin

Répondre

1

En général HTTP utilise des virgules pour séparer les éléments dans une liste en virgules sont utilisés pour séparer les paramètres d'un élément. Donc, la syntaxe de virgule serait correcte.

Mais selon la spécification, le If-Modified-Since header field n'autorise qu'une seule date et pas une liste de dates. Je n'ai donc pas la sémantique d'une liste de dates dans ce cas.

+0

Intéressant. Le code de Plone suppose qu'il peut y avoir plusieurs valeurs séparées par des points-virgules. – optilude

2

Cet en-tête a peut-être été créé en joignant deux en-têtes If-Modified-Since distincts. En général, HTTP permet de fusionner plusieurs en-têtes en une seule, séparés par des virgules, ce que les mandataires peuvent faire.

Cependant, il ne permet pas en cas de If-Modified-Since-tête, de sorte que vous obtenez la demande malformé et devrait ignorer If-Modified-Since ou échouer avec le statut 400.

Questions connexes