favicon.ico的正确MIME类型是什么?

204

根据互联网数字分配机构(IANA)的说法,所有.ico文件都属于MIME类型image/vnd.microsoft.icon。(来源

例如: <link rel="icon" type="image/vnd.microsoft.icon" href="favicon.ico" />

然而,聪明的互联网专家Paul Irish声称这是错误的,实际上应该使用image/x-icon。(来源

例如: <link rel="icon" type="image/x-icon" href="favicon.ico" />

我知道对于.ico文件来说,你可以不包括"type"属性,但如果你要包括,应该使用哪个呢?将它作为官方IANA类型提供是否真的存在问题?


3
注意事项:favicon.ico文件可能不是真正的“.ico”文件。我的企业网站使用一张png图片(命名为“favicon.ico”),并以“image/png”类型提供它。将其用本文提到的任何一种“.ico”类型提供都是错误的,因为这会导致浏览器错误解读! - Dan H
3个回答

252

当您提供一个.ico文件用作网站图标时,这并不重要。所有主流浏览器都能正确识别这两种 MIME 类型。因此,您可以放心使用以下任一类型:

<!-- IE -->
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<!-- other browsers -->
<link rel="icon" type="image/x-icon" href="favicon.ico" />

或者使用 image/vnd.microsoft.icon,所有浏览器都可以正常工作。

注意:没有针对 MIME 类型 image/x-icon 的 IANA 规范,因此它似乎比 image/vnd.microsoft.icon 更加非官方。

唯一有区别的情况是,如果您尝试在 <img> 标签中使用 .ico 文件(这相当少见)。 根据之前的测试,一些浏览器只会在以 MIME 类型 image/x-icon 提供时将 .ico 文件显示为图像。更近期的测试显示:Chromium、Firefox 和 Edge 支持两种内容类型,IE11 则不支持。如果可能的话,请避免将 ico 文件用作图像,使用 png


你说,只要网络服务器以 image/x-image 的格式提供支持,就可以在 <img src=''> 中使用 .ico 文件。然后你又说,如果你要将 .ico 文件用作 HTML 页面中的图像,应该将 MIME 类型设置为 image/x-icon - Chuck Le Butt
太好了,现在至少有意义了!虽然我不是很感兴趣在网站中将.ico文件作为图像进行服务。问题特别是关于使用.ico文件作为网站图标。如果您重新表达您的答案,那将更有帮助。谢谢。 - Chuck Le Butt
根据维基百科,image/x-icon只是由微软编造的,而image/vnd.microsoft.icon已经在IANA注册(但并非由微软自己注册)。 - mjaggard
17
谷歌使用 image/x-icon 格式作为他们的网站图标 (favicon)。 - NateS
谢谢!可能是最好的答案。 - Anton Semenichenko
显示剩余3条评论

61

我认为这种混淆的根源在于这篇维基百科文章中有很好的解释。

虽然ICO文件的IANA注册的MIME类型是image/vnd.microsoft.icon,但它是由第三方提交给IANA的,并未被Microsoft软件所认可。 Microsoft使用的是image/x-icon。

即使ICO格式的发明者也不使用官方的MIME类型,那么我也会使用image/x-icon


8
终于有答案了!然而它仍是IANA注册的MIME类型……即使微软自己不使用它。很奇怪。 - Chuck Le Butt

10

我注意到在使用 type="image/vnd.microsoft.icon" 时,当浏览器没有连接到互联网时,网站图标无法显示。但是,type="image/x-icon" 可以在浏览器无论是否联网的情况下都能正常工作。有时,在开发过程中,我可能没有连接到互联网。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接