浏览器中的全球化,缓存控制和HTTP日期

时间:2009-06-30 16:24:26

标签: c# internationalization cross-browser globalization

我需要有关浏览器的教育以及他们如何在HTTP标头中发送日期。我担心如果用户有不同的浏览器或本地化,我将无法进行字符串比较。

目前,我有类似的代码来处理请求:

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

目标:我不希望它破裂。

所以我检查了几个浏览器的请求标头:

当我使用IE时,用英语作为我的语言:

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

当我使用IE时,以法语(比利时)作为我的语言(我原本期望“mar”而不是“Tue”):

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

无论如何,我都是从Firefox获得的:

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

对我来说这看起来很,因为看起来日期都是使用英文缩写和单一格式(RFC 1123) - 但我不确定这适用于所有主流浏览器以及所有全球化和操作系统(我只能访问Windows机器上的测试)。

我做得对吗?

1 个答案:

答案 0 :(得分:2)

是的,这适用于所有浏览器。它的HTTP规范建立了这个标题的格式,据我所知,在这种情况下所有的浏览器都是兼容的。

此If-Modified-Since和Last-Modified标头不受Accept-Language(它指的是主体而不是标头)的影响。

相关问题