搞web技术绕不过去的小知识点MIME类型

(31) 2023-12-28 19:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说搞web技术绕不过去的小知识点MIME类型,希望能够帮助你!!!。

最近在更新nginx系列文章时,遇到有网友询问mime.types是什么,nginx作为http服务器,在http{}指令块中引入了mime类型(include /etc/nginx/mime.types):

本篇针对mime小知识做个介绍(关于nginx的内容可以查看这篇每天5分钟掌握的nginx基础知识)。

MIME是什么

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都有默认值:

  • text:默认使用 text/plain
  • application:默认application/octet-stream

正确使用MIME类型的重要性

很多 web 服务器使用默认的 application/octet-stream 来发送未知MIME。出于一些安全原因,对于这些资源浏览器不允许设置一些自定义默认操作,导致用户必须存储到本地以使用。

常见的导致服务器配置错误的文件类型如下所示:

  • RAR 编码文件。在这种情况,理想状态是,设置真实的编码文件类型;但这通常不可能(可能是服务器所未知的类型或者这个文件包含许多其他的不同的文件类型)。这种情况服务器将发送 application/x-rar-compressed 作为 MIME 类型,用户不会将其定义为有用的默认操作。
  • 专有文件类型。是专有文件时需要特别注意。使用 application/octet-stream 作为特殊处理是不被允许的:对于一般的 MIME 类型浏览器不允许定义默认行为(比如“在 Word 中打开”)

在缺失 MIME 类型或客户端认为文件设置了错误的 MIME 类型时,浏览器可能会通过查看资源来进行 MIME 嗅探。

每一个浏览器在不同的情况下会执行不同的操作。因为这个操作会有一些安全问题,有的 MIME 类型表示可执行内容而有些是不可执行内容。

浏览器可以通过请求头 Content-Type 来设置 X-Content-Type-Options 以阻止 MIME 嗅探

对于WEB开发,两个默认的MIME

application/octet-stream

这是应用程序文件的默认值。

意思是 *未知的应用程序文件*,浏览器一般不会自动执行或询问执行。浏览器会像对待设置了 HTTP 头Content-Disposition 值为 attachment 的文件一样来对待这类文件。

text/plain

文本文件默认值。

即使它意味着未知的文本文件,但浏览器认为是可以直接展示的。

text/plain的意思是指未知类型,不是指所有类型。

如果浏览器想要一个文本文件的明确类型,浏览器会认为它们并不匹配。

比如说,如果明确要通过<link>链接下载 CSS 文件,如果返回信息是 text/plain,浏览器会认为这是无效 CSS 文件,CSS 类型需要使用 text/css才行。

写在最后

最后,大家在开发中要留意返回MIME的设定。

另外,nginx中include的是支持的MIME类型。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复