C# 浏览器中的全球化、缓存控制和HTTP日期
我需要关于浏览器的教育,以及他们如何在HTTP头中发送最新信息。我担心如果用户使用不同的浏览器或本地化,我将无法进行字符串比较 目前,我有这样的代码来处理请求:C# 浏览器中的全球化、缓存控制和HTTP日期,c#,internationalization,cross-browser,globalization,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) } el
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”):
不管怎样,我从Firefox获得了以下信息:
Accept-Language: en-us,en;q=0.5
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
这对我来说似乎很好,因为日期似乎都使用英文缩写和单一格式(RFC 1123)——但我不确定这是否适用于所有主要浏览器、所有全球化和操作系统(我只能在Windows机器上进行测试)
我做得对吗?是的,这适用于所有浏览器。是HTTP规范建立了这个头的格式,据我所知,在这种情况下,所有浏览器都是兼容的 如果修改自和上次修改的标题不受Accept语言(它指的是正文而不是标题)的影响,则此选项无效
Accept-Language: en-us,en;q=0.5
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT