【问题标题】:Globalization, cache control, and HTTP dates in browsers浏览器中的全球化、缓存控制和 HTTP 日期
【发布时间】: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


    【解决方案1】:

    是的,这适用于所有浏览器。它是建立此标头格式的 HTTP 规范,据我所知,所有浏览器都符合这种情况。

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

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 2015-02-07
      • 2018-08-22
      • 1970-01-01
      相关资源
      最近更新 更多