【发布时间】:2009-06-30 16:24:26
【问题描述】:
我需要了解浏览器以及它们如何在 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 机器上进行测试)。
我做得对吗?
【问题讨论】:
标签: c# internationalization cross-browser globalization