Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说搞web技术绕不过去的小知识点MIME类型,希望能够帮助你!!!。
最近在更新nginx系列文章时,遇到有网友询问mime.types是什么,nginx作为http服务器,在http{}指令块中引入了mime类型(include /etc/nginx/mime.types):
本篇针对mime小知识做个介绍(关于nginx的内容可以查看这篇每天5分钟掌握的nginx基础知识)。
MIME:Multipurpose Internet Mail Extensions,媒体类型,是一种标准,用来表示文档、文件或字节流的性质和格式,由 IETF RFC 6838 中定义和标准化,由IANA跟踪管理。
浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理 URL,因此 Web 服务器在响应头中添加正确的 MIME 类型非常重要。如果配置不正确,浏览器可能会无法理解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。
// 由 “类型” + “/” + “子类型” 构成
# 还有一个可选的参数可设置,比如对于text可以设定charset=UTF-8参数
type/subtype;parameter=value
MIME对大小写不敏感,但建议使用小写,比如:
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream
…
其中 type 代表对文件的分类,比如text、image、video或application。
subtype是对type的细分,如果没有设定subtype,不同type都有默认值:
很多 web 服务器使用默认的 application/octet-stream 来发送未知MIME。出于一些安全原因,对于这些资源浏览器不允许设置一些自定义默认操作,导致用户必须存储到本地以使用。
常见的导致服务器配置错误的文件类型如下所示:
在缺失 MIME 类型或客户端认为文件设置了错误的 MIME 类型时,浏览器可能会通过查看资源来进行 MIME 嗅探。
每一个浏览器在不同的情况下会执行不同的操作。因为这个操作会有一些安全问题,有的 MIME 类型表示可执行内容而有些是不可执行内容。
浏览器可以通过请求头 Content-Type 来设置 X-Content-Type-Options 以阻止 MIME 嗅探
application/octet-stream
这是应用程序文件的默认值。
意思是 *未知的应用程序文件*,浏览器一般不会自动执行或询问执行。浏览器会像对待设置了 HTTP 头Content-Disposition 值为 attachment 的文件一样来对待这类文件。
text/plain
文本文件默认值。
即使它意味着未知的文本文件,但浏览器认为是可以直接展示的。
text/plain的意思是指未知类型,不是指所有类型。
如果浏览器想要一个文本文件的明确类型,浏览器会认为它们并不匹配。
比如说,如果明确要通过<link>链接下载 CSS 文件,如果返回信息是 text/plain,浏览器会认为这是无效 CSS 文件,CSS 类型需要使用 text/css才行。
最后,大家在开发中要留意返回MIME的设定。
另外,nginx中include的是支持的MIME类型。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章