一、什么是MIME-TYPE
MIME——Multipurpose Internet Mail Extension(多用途因特网邮件扩展)最初是为了满足电子邮件支持多字符集及附件而出现的。
通过MIME,我们可以写一封既含有英文,又含有中文,再加上一个文件作为附件的邮件。这种含有多种类型数据的文件被称为多部分对象集合(Multipart messages)。
MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范
二、MIME与HTTP协议
除了支持电子邮件的SMTP协议以外,MIME还被其他协议或者程序广泛使用着,这其中就包括大名鼎鼎的HTTP协议。HTTP服务器在发送一份报文主体时,在HTTP报文头部插入解释自身数据类型的MIME头部信息(Content-Type)。
MIME-type和Content-Type的关系:
当web服务器收到静态的资源文件请求时,依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME Type,再根据MIME Type设置HTTP Response的Content-Type,然后客户端如浏览器根据Content-Type的值处理文件。
三、MIME与Nginx
nginx.conf配置文件http指令块有如下默认指令
http {
include mime.types;
default_type application/octet-stream;
include表示纳入mime.types文件的配置,
如果nginx.conf有重复的指令,可以抽取出来,利用include来帮我们简化配置,避免修改一个相同的配置,要改动好几个地方。
incluee xxx.conf;
default_type
如果Web程序没设置,Nginx也没找到对应文件的扩展名的话,就使用默认的Type,这个在Nginx 里用 default_type定义: default_type application/octet-stream,这是应用程序文件类型的默认值。
application/octet-stream
是HTTP规范中Content-Type的一种,意思是 未知的应用程序文件 ,浏览器一般不会自动执行或询问执行。
只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)。
conf/mime.type文件内容如下:
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
application/font-woff woff;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
...
这里形如text/html格式的字符串就是用来说明数据类型的,/前的是主类型,/之后的是该主类型下的子类型。详细的类型定义在RFC2046中。
Nginx通过服务器端文件的后缀名来判断这个文件属于什么类型,再将该数据类型写入HTTP头部的Content-Type字段中,发送给客户端。
比如,当我们打开OSC的一个页面,看到一个PNG格式的图片的时候,Nginx是这样发送格式信息的:
服务器上有enter_narrow.png这个文件,后缀名是png;
根据mime.types,这个文件的数据类型应该是image/png;
将Content-Type的值设置为image/png,然后发送给客户端。
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types
https://my.oschina.net/plutonji/blog/527797
http://www.ganzhishi.com/view.asp?id=1613
http://tool.oschina.net/commons?type=22013-05-17