Правильный тип MIME для favicon.ico?

147

Согласно Управлению по присвоению номеров в Интернете (IANA), все ICO-файлы относятся к типу MIME image/vnd.microsoft.icon. ( Источник )

Например <link rel="icon" type="image/vnd.microsoft.icon" href="favicon.ico" />

Однако сообразительный интернет-гуру Пол Айриш утверждает, что это неправильно, и что это действительно так image/x-icon. ( Источник )

Например <link rel="icon" type="image/x-icon" href="favicon.ico" />

Я знаю, что вам может сойти с рук не включать "тип" для файлов .ico, но если вы собираетесь включить его, что это должно быть? Есть ли на самом деле какие-либо проблемы с обслуживанием его в качестве официального типа IANA?

Чак Ле Батт
источник
Примечание: favicon.icoфайлы могут быть не настоящими ".ico" файлами. Мой корпоративный сайт использует png (с именем «favicon.ico») и обслуживает его с типом «image / png». Обслуживание его с любым из упомянутых здесь типов ".ico" было ОБОИМ неправильным, так как это привело к неверной интерпретации браузером!
Дэн Х

Ответы:

184

Когда вы используете 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, и он будет работать со всеми браузерами.

Примечание. Спецификации IANA для MIME-типа отсутствуют image/x-icon, поэтому кажется, что он немного более неофициальный, чем image/vnd.microsoft.icon.

Единственный случай, когда есть разница, - это если вы пытались использовать ICO-файл в <img>теге (что довольно необычно). Основываясь на предыдущем тестировании, некоторые браузеры отображали файлы .ico как изображения только в том случае, если они обслуживались с MIME-типом image/x-icon. Более свежие тесты показывают: Chromium, Firefox и Edge подходят для обоих типов контента, IE11 - нет. Если можете, просто избегайте использования icoфайлов в качестве изображений, используйте png.

мата
источник
Я ничего нигде не выбирал, я пытался объяснить два варианта использования: 1 - используется как значок (не имеет значения, какой тип mime), 2 - используется как img на веб-странице (IE отображает его правильно только с mimetype image / x -икона).
mata
Вы говорите, что можете использовать файлы .ico, <img src=''>если они обслуживаются веб-сервером как image / x-image . Затем вы говорите, что если собираетесь использовать файлы .ico в качестве изображений на HTML-страницах, вам следует установить тип MIME на image / x-icon .
Чак Ле Батт,
Отлично. По крайней мере, теперь это имеет смысл! Однако я не очень заинтересован в использовании файлов .ico в качестве изображений на веб-сайте. Речь идет именно об использовании файла .ico в качестве значков. Если вы перефразируете свой ответ, это будет намного полезнее. Спасибо.
Чак Ле Батт,
Согласно википедии, image / x-icon были созданы Microsoft, image / vnd.microsoft.icon зарегистрированы в IANA (но не зарегистрированы самой Microsoft).
mjaggard
10
FWIW, Google использует / х-значок изображения для их фавиконки .
NateS
31

Я думаю, что корень этой путаницы хорошо объяснен в этой статье в Википедии.

Хотя зарегистрированным IANA типом MIME для файлов ICO является image / vnd.microsoft.icon, он был отправлен в IANA в 2003 году третьей стороной и не распознается программным обеспечением Microsoft, которое вместо этого использует image / x-icon.

Если даже изобретатель формата ICO не использует официальный тип MIME, я тоже буду использовать image/x-icon.

Юрген Штайнблок
источник
3
Наконец-то ответ! Однако это все еще зарегистрированный IANA тип MIME ... даже если сама Microsoft не использует его. Странно.
Чак Ле Батт,
3

Я заметил, что при использовании type="image/vnd.microsoft.icon"значок не отображается, если браузер не подключен к Интернету. Но type="image/x-icon"работает независимо от того, может ли браузер подключиться к Интернету или нет. При разработке иногда я не подключаюсь к Интернету.

kmcc
источник