2009-06-30 3 views
3

J'ai besoin d'informations sur les navigateurs et sur la façon dont ils envoient des dates dans les en-têtes HTTP. Je suis inquiet que je ne serai pas en mesure de faire une comparaison de chaîne si l'utilisateur a un navigateur ou une localisation différente.La globalisation, le contrôle du cache et les dates HTTP dans les navigateurs

Actuellement, j'ai le code quelque chose comme ceci pour traiter les demandes:

DateTime dt = getLastModified(someResourceHandle); 
if(Request.Headers["If-Modified-Since"] == dt.ToString("R")/*RFC1123*/) { 
    // return HTTP 304 (Not Modified) 
} else { 
    getFullResource(someResourceHandle); 
} 

Objectif: Je ne veux pas casser.

J'inspecta les en-têtes de demande d'un navigateur couple:

Lorsque j'utilise IE, avec l'anglais comme langue:

Accept-Language: en-us 
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT 

Lorsque j'utilise IE, avec le français (Belgique) comme langue (je me serais attendu "mar" au lieu de "mar"):

Accept-Language: fr-be 
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT 

Peu importe, je reçois ce billet depuis Firefox:

Accept-Language: en-us,en;q=0.5 
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT 

Cela ressemble bon pour moi, car il semble que les dates sont tous en utilisant les abréviations anglais et un format unique (RFC 1123) - mais je ne suis pas sûr que cela est valable pour tous les principaux navigateurs et pour tous globalisations et systèmes d'exploitation (j'ai seulement accès au test sur une machine Windows).

Est-ce que je le fais bien?

Répondre

2

Oui, cela s'applique à tous les navigateurs. C'est la spécification HTTP qui établit le format de cet en-tête et pour autant que je sache, tous les navigateurs sont conformes dans ce cas.

Ces en-têtes If-Modified-Since et Last-Modified ne sont pas affectés par Accept-Language (qui fait référence au corps et non aux en-têtes).

Questions connexes