我在 MVC 中有一个控制器,用于从数据库中提供图像。
编辑:如果我在 MVC 中通过完全标准的方式提供文件,这仍然会发生。
每次我请求我的图片时,谷歌浏览器也会搜索我的 favicon.ico。
为了避免对“我也应该关心”的其他事情进行不必要的讨论,让我们假设在这个示例中我不关心缓存,并且我将始终返回带有文件的 HTTP 响应 200。
在我的控制器中,我返回以下内容:
return File(fileBytes, contentType);
检查 Fiddler 2 后,会生成以下响应:
HTTP/1.1 200 OK
缓存控制:公共
内容类型:image/gif
ETag:oYu19wKo+KEHkyxZQ2WXAA==
服务器:Microsoft-IIS/7.0
X-AspNetMvc-Version:1.0
X-AspNet-Version:2.0.50727
X-Powered -作者:ASP.NET
日期:2009 年 6 月 16 日星期二 18:48:45 GMT
内容长度:29344
相比之下,当我(第一次)请求 Google 徽标时,这是来自 Google 的 Fiddler 的响应:
HTTP/1.1 200 OK
内容类型:image/gif
最后修改时间:2006 年 6 月 7 日星期三 19:42:34 GMT
日期:2009 年 6 月 16 日星期二 18:50:54 GMT
到期时间:2010 年 6 月 16 日星期三 18:50 :54 GMT
缓存控制:公共,最大年龄 = 31536000
服务器:gws
内容长度:8706
年龄:2
但是,在 Chrome 中获取我的图像后,Chrome 会尝试找到我的 favicon.ico。请求 Google 徽标后不会尝试此操作。
任何想法为什么会发生这种情况?根据我对 HTML 的理解,答案必须在响应标头中,因为这肯定是客户端必须进行的全部操作吗?请纠正我!
编辑2:似乎很多人完全误解了这个问题。问题不在于缺少 favicon 和 MVC 中的错误请求 - 这是在仅加载图像时请求 favicon 的问题,内容类型为“IMAGE/JPEG”,而不是网页内容“文本/HTML”的类型!!