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?