`

MIME与mime.types

 
阅读更多

引自:https://my.oschina.net/plutonji/blog/527797

当你刚安装完Nginx,打开默认的配置文件nginx.conf时,你会看到http上下文中有这一行配置:

include       mime.types; 

有的小伙伴就有疑问了:mime.types是什么文件?在Nginx中又是什么作用呢? 下面我们就来看看,mime.types究竟是怎么回事。

一、MIME与电子邮件

说起MIME,我们首先要说说电子邮件。

早期的电子邮件只能支持ASCII字符集,而且没法添加附件。后来,人们意识到电子邮件要想走向世界,必须支持更多的字符集,同时,能够随着邮件发送附件也成为越来越迫切的需求。在不断的努力下,MIME——Multipurpose Internet Mail Extension(多用途因特网邮件扩展)于1992年诞生了。通过MIME,我们可以将不同类型的数据(文本、图片、视频)放到一条邮件中。比如,可以写一封既含有英文,又含有中文,再加上一个mp3音乐文件作为附件的邮件。这种含有多种类型数据的文件被称为多部分对象集合(Multipart messages)。这就解决了我们前面说的两个问题。

可以说,没有MIME,就没有今天多姿多彩的互联网。

二、MIME与HTTP协议

除了支持电子邮件的SMTP协议以外,MIME还被其他协议或者程序广泛使用着,这其中就包括大名鼎鼎的HTTP协议。HTTP服务器在发送一份报文主体时,在HTTP报文头部插入解释自身数据类型的MIME头部信息(Content-Type)。客户端接收到这部分有关数据类型的信息,就能调用相应的程序处理数据。有时候,这个程序是客户端(浏览器)内置的,比如打开一个GIF图片。有时候你需要先安装一个插件,比如第一次观看优酷的视频前你一般需要安装Flash插件。

三、MIME与Nginx

打开Nginx配置文件中的mime.types,我们能看到如下信息:

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/tiff                            tif tiff;
    image/vnd.wap.wbmp                    wbmp;
    image/x-icon                          ico;
    image/x-jng                           jng;
    image/x-ms-bmp                        bmp;
    image/svg+xml                         svg svgz;
    image/webp                            webp;

    application/font-woff                 woff;
    application/java-archive              jar war ear;
    application/json                      json;
    application/mac-binhex40              hqx;
    application/msword                    doc;
    application/pdf                       pdf;
    application/postscript                ps eps ai;
    application/rtf                       rtf;
    application/vnd.apple.mpegurl         m3u8;
    application/vnd.ms-excel              xls;
    ....以下省略....

这里形如text/html格式的字符串就是用来说明数据类型的,/前的是主类型,/之后的是该主类型下的子类型。详细的类型定义在RFC2046中。Nginx通过服务器端文件的后缀名来判断这个文件属于什么类型,再将该数据类型写入HTTP头部的Content-Type字段中,发送给客户端。

比如,当我们打开OSC的一个页面,看到一个PNG格式的图片的时候,Nginx是这样发送格式信息的:

  1. 服务器上有enter_narrow.png这个文件,后缀名是png;
  2. 根据mime.types,这个文件的数据类型应该是image/png;
  3. Content-Type的值设置为image/png,然后发送给客户端。

我们在Chrome浏览器中可以看到这个文件返回的头部信息正如上文所写的一样:

PNG

这就是mime.types的作用,小伙伴们了解了吗?

分享到:
评论

相关推荐

    mime-types下载

    `mime-types`库就是这样的一个工具,它为Ruby语言提供了广泛支持,允许程序识别并操作各种MIME类型。 `mime-types`库主要功能包括: 1. **MIME类型识别**:它能够根据文件扩展名或文件内容来识别其对应的MIME类型...

    MIME-Types-1.32.tar.gz

    标签"MIME, linux, apache, nginx"进一步强调了这个压缩包与Linux操作系统,以及Apache和Nginx服务器的关联。在Linux环境下,用户可以通过命令行工具,如tar命令,来解压并安装这个包。解压后,用户需要将其中的MIME...

    MIME类型,mime-types

    `mime-types.html` 和 `mime-types.xls` 文件提供了详细的MIME类型列表,这些文件可能来自Webmaster Toolkit,这是一个为网站管理员提供工具和资源的平台。HTML文件可能是一个网页形式的MIME类型参考,而XLS文件则...

    mime-types:最终的javascript content-type实用程序

    而不是天真地返回第一个可用类型, mime-types只返回false ,所以var type = mime.lookup('unrecognized') || 'application/octet-stream' var type = mime.lookup('unrecognized') || 'application/octet-stream' ...

    mime-types.xml

    文件的mimeTypes

    PHP解析Apache MIME类型的库.zip

    在`dflydev-apache-mime-types-master`这个压缩包中,包含了这个库的源代码、测试用例、安装说明和可能的示例应用。开发者可以通过阅读源码来理解其内部实现,通过测试用例了解其功能和用法,从而在自己的项目中有效...

    boa库,cgi库及mimi.types

    `mimetypes.types_map`是Python标准库中的一个字典,用于映射文件扩展名到其对应的MIME类型。在Web服务器中,MIME类型用来标识资源的类型,如文本、图像、音频或视频等。 boa在处理静态文件时,会根据文件的扩展名...

    mime-types:Java库可检测文件的MIME类型

    用法 import org.overviewproject.mime_types.MimeTypeDetector// ...File file = new File ( " foo.txt " );MimeTypeDetector detector = new MimeTypeDetector ();String mimeType = detector . ...

    perl-MIME-Types-2.170.0

    MIME (Multipurpose Internet Mail Extensions) is an Internet standard for describes message content types. MIME ( 多用途的网际邮件扩充协议)是用于描述信息内容类型的国际标准。 MIME messages can contain...

    MimeType文件校验demo

    String mimeType = mimeTypes.getContentType("path_to_your_file"); ``` 3. 引入外部jar包,如Apache Tika: Apache Tika是一个强大的库,能够识别大量的文件类型,包括图片、音频、视频等。如果内置的Java方法...

    获取文件的mime typePHP类库.zip

    class MimeTypes {  public static $mime_types = array (  'apk' => 'application/vnd.android.package-archive',  '3gp' => 'video/3gpp',  'ai' => 'application/postscript',  'aif' =>...

    MimeTypes:通过mime-db生成的从文件名扩展名到MIMEmedia类型的简单查找,该查找又从IANA,Apache和nginx的MIME类型编译而来

    用法查找MIME /媒体类型的文件名/扩展名通过使用MimeTypes.TryGetMimeType或MimeTypes.GetMimeType方法获取文件名/扩展名的MIME /媒体类型: if ( MimeTypes . TryGetMimeType ( " awesome-file.json " , out var ...

    go-mime:使用嵌入式 mime 类型扩展 pkgmime

    哑剧 使用从 Unix 机器的/etc/mime.types文件中提取的嵌入式设置 mime 类型扩展 Go 的 pkg/mime。 见mime.go

    mime-db:媒体类型数据库

    mime-db 这是所有mime类型的数据库。 它由一个单一的公共JSON文件组成,并且不包含任何逻辑,因此可以使用API​​尽可能使其不受干扰。 它汇总来自以下来源的数据: 安装 npm install mime-db 数据库下载 如果您...

    mime:Elixir MIME库

    iex> Mime.Types.type("json") "application/json" iex> Mime.Types.extensions("application/json") ["json"] iex> Mime.Types.path("fixtures/users.json") "application/json" 模仿类型 该模块使用Mailcap项目中...

    ruby-mime-types:Ruby MIME类型注册表库

    例如,使用`MIME::Types.of('txt')`可以获取与`.txt`关联的所有MIME类型。 3. **类型注册**:除了内置的数据库,`ruby-mime-types`还允许用户添加、更新或删除自定义的MIME类型,以适应特定项目的需求。 4. **版本...

    ApacheMimeTypesToDotNet:将 apache mime.types 文件转换为 C# 字典由文件扩展名键控

    将 Apache mime.types 文件转换为由文件扩展名键入的 C# Dictionary。 有关示例输出,请参阅 ApacheMimeTYpes.cs。 源文件位于: 并根据顶部的权限使用: # This file maps Internet media types to unique file ...

    mime-types-cr:Crystal的MIME类型

    MIME内容类型用于与MIME兼容的通信中,例如在电子邮件或HTTP通信中,以指示要传输的内容的类型。 mime-types库提供了确定和使用有关MIME实体(作为MIME::Type对象的可枚举集合提供)的详细信息的功能。 RFC和供应商...

    .net设置Mime.zip

    MIME类型,也称为Media Types,是为不同格式的数据分配的一种标识,例如文本、图像、音频、视频等。在Web开发中,它们在HTTP协议中起到关键作用,帮助服务器向客户端正确地发送资源。 标题“.NET设置MIME.zip”暗示...

    perl-MIME-Lite-HTML-1.23-2.el6.noarch

    用于搭建MHA高可用,测试安装包可以运行,并且多次用次安装包安装成功

Global site tag (gtag.js) - Google Analytics