ক্রোম
ক্রোমের (লেখার মতো সংস্করণ 38) মাইম টাইপ নির্ধারণ করার 3 টি উপায় রয়েছে এবং একটি নির্দিষ্ট ক্রমে তা করে। নীচে স্নিপেট ফাইল 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
)।
উদাহরণ: মাইক্রোসফ্ট এক্সেল ইনস্টল করা উইন্ডোজ সিস্টেম থেকে সিএসভি ফাইল আপলোড করার সময়, ক্রোম এটি হিসাবে রিপোর্ট করবে application/vnd.ms-excel
। এটি কারণ .csv
প্রথম হার্ড-কোডেড তালিকায় নির্দিষ্ট করা হয়নি, তাই ব্রাউজারটি সিস্টেম রেজিস্ট্রিতে ফিরে আসে। সেট করা আছে HKEY_CLASSES_ROOT\.csv
নামের একটি মান Content Type
আছে application/vnd.ms-excel
।
ইন্টারনেট এক্সপ্লোরার
আবার একই উদাহরণ ব্যবহার করে, ব্রাউজারটি রিপোর্ট করবে application/vnd.ms-excel
। আমি মনে করি এটি ইন্টারনেট এক্সপ্লোরার (লেখার মতো 11 সংস্করণ) রেজিস্ট্রি ব্যবহার করে ধরে নেওয়া যুক্তিযুক্ত । সম্ভবত এটি ক্রোম এবং ফায়ারফক্সের মতো একটি হার্ড কোডিং তালিকা ব্যবহার করে তবে এর বদ্ধ উত্সের প্রকৃতি যাচাই করা শক্ত করে তোলে।
ফায়ারফক্স
ক্রোম কোডে নির্দেশিত হিসাবে, ফায়ারফক্স (লিখিতভাবে 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 লাইনের কাছাকাছি কোথাও ফাইলটিতে আগে এসেছিল You're আপনি সন্ধান করছেন defaultMimeEntries
এবং extraMimeEntries
।
আমার বর্তমান প্রোফাইলের সাথে, ব্রাউজারটি প্রতিবেদন করবে text/csv
কারণ এটির জন্য একটি এন্ট্রি রয়েছে mimeTypes.rdf
(উপরের তালিকার আইটেম 2)। একটি নতুন প্রোফাইল সহ, যাতে এই এন্ট্রি নেই, ব্রাউজারটি রিপোর্ট করবে application/vnd.ms-excel
(তালিকার আইটেম 3)।
সারসংক্ষেপ
ব্রাউজারগুলির হার্ড-কোডড তালিকাগুলি বেশ সীমাবদ্ধ। প্রায়শই, ব্রাউজারের দ্বারা প্রেরিত মাইম টাইপটি ওএস দ্বারা রিপোর্ট করা হয়। এবং ঠিক এই কারণেই, প্রশ্নে যেমনটি বলা হয়েছে, ব্রাউজারের দ্বারা রিপোর্ট করা মাইম টাইপটি বিশ্বাসযোগ্য নয়।