引用:

    1. nodejs 的 http 模块
    1. MIME 是 Multipurpose Internet Mail Extensions 的缩写,表示“多用途因特网邮件扩展”
    2. MIME 最初是为电子邮件设计的,用于支持文本、附件、图像、视频等多种数据类型的传输。但随着时间的发展,MIME 的使用已经扩展到了其他的 Internet 技术中,特别是 HTTP 和 Web 浏览器。
    3. MIME-type,也经常被称为“内容类型”(Content-Type)
    4. MIME-type 是一种标识数据的方式,它告诉浏览器或其他客户端如何解释这些数据
    5. MIME 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式
    6. 浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理 URL,因此 Web 服务器在响应头中添加正确的 MIME 类型非常重要。如果配置不正确,浏览器可能会无法解析文件内容,网站将无法正常工作。
    7. MIME-type 的组成:**type/subtype**
      1. 大类 **type**
      2. 子类 **subtype**
      3. 中间由一个斜杠 **/** 分隔
      4. 中间不允许出现空格
      5. type 表示可以被分多个子类的独立类别,subtype 表示细分后的每个类型
    8. MIME类型对大小写不敏感,但是传统写法都是小写
    9. 一些常见的 MIME-type 示例
      1. **text/html** 用于 HTML 文档
      2. **text/plain** 纯文本
      3. image/jpeg JPEG 格式的图像
      4. image/png PNG 格式的图像
      5. audio/mp3 MP3 格式的音频
      6. **application/json** JSON 数据
      7. application/pdf PDF 文档
      8. application/octet-stream 任意的二进制数据
      9. **multipart/form-data** 需要在表单中进行文件上传时,就需要使用该格式
      10. more … 👉 MIME 类型 | 菜鸟教程 | content-type | 菜鸟教程
    10. 当 Web 服务器发送数据到浏览器时,它通常会在 HTTP 响应头中包含一个 Content-Type 头,该头的值就是相应的 MIME-type
    11. MIME-type 的识别和处理对于 Web 浏览器而言至关重要,因为它决定了如何呈现或处理接收到的内容
    12. 客户端(以浏览器为例)读 Content-Type
      1. 首先,浏览器会依据 Web 服务器丢过来的 Content-Type 来识别服务器丢过来的是什么类型的数据
      2. 然后,浏览器会选择对应的处理方式来处理服务器丢过来的数据
      3. 例如,当浏览器收到 Content-Type 为 text/html 的内容时,它会知道这是一个 HTML 文档,并进行解析和渲染。如果浏览器收到的明明是 HTML 文档数据,但是服务器却告知浏览器 Content-Type 是 text/palin,那么浏览器会将 HTML 文档数据视作普通文本,直接原封不动地铺到界面中,并不会将其视作 HTML 文档来解析。
      4. 目的:让客户端知道服务端传递的是什么类型的数据
    1. const http = require('http');
    2. const server = http.createServer((req, res) => {
    3. res.writeHead(200, { 'Content-Type': 'text/html' });
    4. res.end(`
    5. <!DOCTYPE html>
    6. <html>
    7. <head>
    8. <title>23.08.11</title>
    9. </head>
    10. <body>
    11. <h1>Hello World</h1>
    12. </body>
    13. </html>`);
    14. });
    15. server.listen(8888, () => {
    16. console.log('Server running on port 8888');
    17. })

    使用浏览器访问:http://localhost:8888/ 结果如下:

    image.png

    1. const http = require('http');
    2. const server = http.createServer((req, res) => {
    3. res.writeHead(200, { 'Content-Type': 'text/plain' });
    4. res.end(`
    5. <!DOCTYPE html>
    6. <html>
    7. <head>
    8. <title>23.08.11</title>
    9. </head>
    10. <body>
    11. <h1>Hello World</h1>
    12. </body>
    13. </html>`);
    14. });
    15. server.listen(8888, () => {
    16. console.log('Server running on port 8888');
    17. })

    现在,我们把 Content-Type 修改为 'text/plain',然后重启服务,再使用浏览器去访问:http://localhost:8888/

    image.png

    由于我们的服务告诉浏览器,响应给你的是一个普通的文本 text/plain,此时浏览器将以普通文本的形式直接将响应的字符串铺出来。

    1. 服务端读 Content-Type
      1. 当你上传文件或提交表单到 Web 服务器时,通常也会包含相应的 Content-Type,告诉服务器你正在发送的数据的类型。
      2. 目的:让服务端知道客户端传递的是什么类型的数据