Krom
Chrome (yazılırken sürüm 38) , MIME türünü belirlemenin 3 yolu vardır ve bunu belirli bir sırayla yapar. Aşağıdaki kod parçası dosya src/net/base/mime_util.cc
yönteminden alınmıştır 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.
Sabit kodlanmış listeler dosyada biraz daha erken gelir: https://cs.chromium.org/chromium/src/net/base/mime_util.cc?l=170 ( kPrimaryMappings
ve kSecondaryMappings
).
Örnek: Microsoft Excel'in yüklü olduğu bir Windows sisteminden bir CSV dosyası yüklerken, Chrome bunu olarak bildirecektir application/vnd.ms-excel
. Bunun nedeni .csv
, ilk sabit kodlu listede belirtilmemesi, dolayısıyla tarayıcının sistem kayıt defterine geri dönmesidir. olarak ayarlanmış HKEY_CLASSES_ROOT\.csv
bir değere sahiptir .Content Type
application/vnd.ms-excel
Internet Explorer
Yine aynı örneği kullanarak, tarayıcı rapor verecektir application/vnd.ms-excel
. Internet Explorer'ın (yazarken sürüm 11) kayıt defterini kullandığını varsaymanın makul olduğunu düşünüyorum . Muhtemelen Chrome ve Firefox gibi sabit kodlanmış bir listeyi de kullanıyor, ancak kapalı kaynak niteliği doğrulamayı zorlaştırıyor.
Firefox
Chrome kodunda belirtildiği gibi, Firefox (yazarken sürüm 32) benzer şekilde çalışır. Dosyadan pasaj uriloader\exthandler\nsExternalHelperAppService.cpp
, yöntemnsExternalHelperAppService::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
Sabit kodlanmış listeler dosyanın daha başında, 441 satırına yakın bir yerde gelir . defaultMimeEntries
Ve extraMimeEntries
.
Mevcut profilimle, tarayıcı rapor verecek text/csv
çünkü bunun için bir giriş var mimeTypes.rdf
(yukarıdaki listede öğe 2). Bu girişe sahip olmayan yeni bir profille, tarayıcı rapor verecektir application/vnd.ms-excel
(listedeki öğe 3).
Özet
Tarayıcılardaki sabit kodlu listeler oldukça sınırlıdır. Genellikle, tarayıcı tarafından gönderilen MIME türü, işletim sistemi tarafından bildirilen tür olacaktır. Ve işte tam da bu yüzden, soruda belirtildiği gibi, tarayıcı tarafından bildirilen MIME türü güvenilmezdir.