我需要有关浏览器的教育以及他们如何在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机器上的测试)。
我做得对吗?
答案 0 :(得分:2)
是的,这适用于所有浏览器。它的HTTP规范建立了这个标题的格式,据我所知,在这种情况下所有的浏览器都是兼容的。
此If-Modified-Since和Last-Modified标头不受Accept-Language(它指的是主体而不是标头)的影响。