百科问答小站 logo
百科问答小站 font logo



既然有文件后缀名,为何还需要MIME类型? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

并不是所有的操作系统都用扩展名来标识文件类型……

同时扩展名事实上也非常混乱,htm和html表示的都是HTML文档,jpeg和jpg都是JPEG图片格式,等等……

最后,浏览器所使用的URL(统一资源定位符),根本就不存在扩展名的约定。就像htt­p://w­ww­­.zhihu.c­­om/ 这个URL,你告诉我扩展名是什么?


所以HTTP协议(以及其他互联网协议)使用另外一种东西来标识文件(资源)的类型,也就是MIME类型,MIME的全称是多用途互联网邮件扩展,简单说最早就是给邮件添加附件和其他信息的,MIME类型用于标识一个资源的类型(例如是插在文档里面的图片还是需要下载的附件)。


通常情况下,HTTP服务器都支持透过HTTP协议直接访问服务器上的静态文件,由于很多习惯上我们使用文件扩展名来描述文件的类型,所以通常来说HTTP服务器会维护一个扩展名和MIME类型的映射表(这就是扩展名和MIME类型的唯一联系),当访问服务器上的静态文件的时候,就会返回相应的MIME类型。如果这个扩展名找不到相应的MIME类型,对于IIS的静态文件处理模快而言,就会直接返回HTTP 404 NotFound。



最后值得注意的是,MIME类型除了描述一个资源是什么类型的,更重要的是描述一段数据是什么编码格式的。除了用;charset=encode来描述文本编码。也有诸如application/x-form-urlencoded这样的MIME类型描述请求数据的编码格式(表示用URL编码格式)。事实上MIME的前半段,如text/,application/,image/,video/这些,表示的是资源的主类型,而后半段,则是资源的编码……




  

相关话题

  一般编程的时候,使用汇编能比使用高级语言(比如C,C++,java等)有更高的运行效率吗?高能高出多少呢? 
  如何捕获一种名为程序员的呆萌生物? 
  如何快速地在每个函数入口处加入相同的语句? 
  中文表达比英文简洁,中文编程能否做到比英文编程更高效? 
  Objective-C 的一些函数名为什么都这么长? 
  a += a *= a; 为什么在C++和Java算出了不同结果? 
  如何理解ByteCode、IL、汇编等底层语言与上层语言的对应关系? 
  作为程序员,是什么让你坚持不懈地学习?难道不累吗? 
  数学/算法:正方形内有5个点,为什么最近点对的距离小于边长? 
  i2c为什么会有TR和TF上升沿和下降沿时间最小时间限制? 

前一个讨论
为什么我用c++写的游戏那么简陋?
下一个讨论
加了第一个同步不是会全部代码执行完吗,为什么出现死锁?





© 2025-05-28 - tinynew.org. All Rights Reserved.
© 2025-05-28 - tinynew.org. 保留所有权利