โครเมียม
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 แต่ลักษณะของแหล่งที่มาปิดทำให้ยากต่อการตรวจสอบ
Firefox
ตามที่ระบุไว้ในโค้ด 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 ที่เบราว์เซอร์รายงานไม่น่าเชื่อถือ