If-Modified-Since
标题在我的ASP.NET 4.0 Web应用程序中,我有一个通用处理程序(.ashx),它提供存储在数据库中的图像。为了提高效率,我正在处理一些与缓存相关的标头并传递缓存信息。
我试图解析If-Modified-Since
标头内容(通常来自IE9),因此我经常得到DateTime解析错误。原来它正在发送这样的东西:
2011年11月28日星期一16:34:52 GMT;长度= 8799
我正在通过使用正则表达式去除最后一部分来处理它。但我很好奇:它的长度是多长,有什么用?它是请求的URL的缓存数据的大小吗?
答案 0 :(得分:1)
这似乎是标题字段的旧Netscape扩展(请参阅an ancient discussion on http-wg);即使它似乎实际上反对HTTP/1.0和HTTP/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在某些时候改编了这个扩展并将其留在了。