Хром
Chrome (версия 38 на момент написания) имеет 3 способа определения типа MIME и делает это в определенном порядке. Приведенный ниже фрагмент взят из файла src/net/base/mime_util.cc, метода MimeUtil::GetMimeTypeFromExtensionHelper.
// We implement the same algorithm as Mozilla for mapping a file extension to
// a mime type. That is, we first check a hard-coded list (that cannot be
// overridden), and then if not found there, we defer to the system registry.
// Finally, we scan a secondary hard-coded list to catch types that we can
// deduce but that we also want to allow the OS to override.
Жестко запрограммированные списки находятся в файле немного раньше: https://cs.chromium.org/chromium/src/net/base/mime_util.cc?l=170 ( kPrimaryMappingsи kSecondaryMappings).
Пример: при загрузке файла CSV из системы Windows с установленным Microsoft Excel, Chrome сообщит об этом как application/vnd.ms-excel. Это связано с тем, что .csvон не указан в первом жестко запрограммированном списке, поэтому браузер возвращается к системному реестру. HKEY_CLASSES_ROOT\.csvимеет значение с именем Content Type, равным application/vnd.ms-excel.
Internet Explorer
Опять же, используя тот же пример, браузер сообщит application/vnd.ms-excel. Я думаю, что разумно предположить, что Internet Explorer (версия 11 на момент написания) использует реестр. Возможно, он также использует жестко запрограммированный список, такой как Chrome и Firefox, но его закрытый исходный код затрудняет проверку.
Fire Fox
Как указано в коде Chrome, Firefox (версия 32 на момент написания) работает аналогичным образом. Фрагмент из файла uriloader\exthandler\nsExternalHelperAppService.cpp, методnsExternalHelperAppService::GetTypeFromExtension
// OK. We want to try the following sources of mimetype information, in this order:
// 1. defaultMimeEntries array
// 2. User-set preferences (managed by the handler service)
// 3. OS-provided information
// 4. our "extras" array
// 5. Information from plugins
// 6. The "ext-to-type-mapping" category
Жестко запрограммированные списки находятся в файле раньше, где-то рядом со строкой 441. Вы ищете defaultMimeEntriesи extraMimeEntries.
В моем текущем профиле браузер сообщит об этом, text/csvпотому что для него есть запись mimeTypes.rdf(пункт 2 в списке выше). При новом профиле, в котором нет этой записи, браузер отправит отчет application/vnd.ms-excel(пункт 3 в списке).
Резюме
Жестко заданные списки в браузерах довольно ограничены. Часто тип MIME, отправляемый браузером, совпадает с типом, сообщенным ОС. И именно поэтому, как указано в вопросе, тип MIME, сообщаемый браузером, ненадежен.