If-Modified-由IE9传递的HTTP头包括长度?

时间:2012-09-27 17:12:08

标签: asp.net http caching internet-explorer-9 last-modified

请澄清IE9传递的这个奇怪的If-Modified-Since标题

在我的ASP.NET 4.0 Web应用程序中,我有一个通用处理程序(.ashx),它提供存储在数据库中的图像。为了提高效率,我正在处理一些与缓存相关的标头并传递缓存信息。

我试图解析If-Modified-Since标头内容(通常来自IE9),因此我经常得到DateTime解析错误。原来它正在发送这样的东西:

  

2011年11月28日星期一16:34:52 GMT;长度= 8799

我正在通过使用正则表达式去除最后一部分来处理它。但我很好奇:它的长度是多长,有什么用?它是请求的URL的缓存数据的大小吗?

2 个答案:

答案 0 :(得分:1)

这似乎是标题字段的旧Netscape扩展(请参阅an ancient discussion on http-wg);即使它似乎实际上反对HTTP/1.0HTTP/1.1规范(这个想法是(功能上)用ETag标头替换)。不知道是什么/为什么IE9发送它并在什么特定条件下(我猜只有缓存标头的特定组合触发它)。

我想最好的解决方案是在分号后删除任何内容,分号通常用于HTTP中以分隔标题中的扩展参数(参见例如the Accept header)。

答案 1 :(得分:1)

根据Squid代理邮件列表中的old post

  

If-Modified-Since的长度参数是Netscape的扩展名   HTTP / 1.0,旨在提高If-Modified的准确性 - 以防万一   文档在同一秒内更新两次。

     

HTTP / 1.1解决了   通过ETag标题和If-None-Match更好地解决同样的问题。

我猜IE在某些时候改编了这个扩展并将其留在了。