5)认识MIME和HTTP

MIME类型 HTTP协议 Web开发基础 Node.js开发 浏览器解析 前后端分离
MIME(多用途互联网邮件扩展类型)是浏览器解析和渲染网页资源的关键。通过HTTP请求返回的Content-Type属性,浏览器能够识别并正确处理CSS、JS、HTML等资源。即使MIME类型缺失或错误,现代浏览器也能根据上下文推断资源类型。HTTP(超文本传输协议)是浏览器与服务器通信的基础,请求和响应分别由请求行、请求头、请求体和响应行、响应头、响应体组成。了解MIME和HTTP是Web全栈开发的基础,后续将完善Web框架并实现个人博客项目。
文章内容
思维导图
常见问题
社交分享

MIME,全称“多用途互联网邮件扩展类型”。这名称相当学术,用人话来说就是:

我们浏览一个网页的时候,之所以能看到html文件展示成网页,图片可以正常显示,css样式能正常影响网页效果,js脚本可以正常运行,视频可以正常播放,字体可以自定义,都跟MIME有着密不可分的关系。

当我们引入CSS的时候,会写一个type=“text/css”


当我们引入JS的时候,会写一个type=“text/javascript”


这就是MIME类型。

对于浏览器来说,它从服务器拿到的资源,不管是CSS还是JS还是HTML,都是一串字符串。

要让CSS、JS、HTML各司其职,做好它该做的事情,就要用MIME来进行判断。

当我们从服务器发起一个HTTP请求,那么HTTP返回的Content-Type属性,就对应了我们说到的这个MIME类型。

以上动图,每个请求文件都有其对应的Content-Type属性和值,不同的文件值不一样。

我们能够看到一个个正常的网页,就是通过Content-Type来决定请求的文件如何渲染,如何执行,如何显示的。

但是,在上一章【浏览器显示一个网页】中,我们并没有看到返回Contnet-Type属性,网页也能正常显示,这是为什么呢?

因为,经过这么多年的发展,现代浏览器已经具备较好的容错能力,即使在某些情况下MIME类型缺失或错误,它们也能够根据上下文推断资源类型并正确解析。

如果我们明确设置资源的Content-Type值,比如上方截图中,将CSS的返回MIME类型Content-Type的值设置为text/html,则CSS就会用HTML类型来解析,从而导致字体并没有变成红色。

这就是MIME的作用,我们要用Node.js开发一个Web框架,MIME是必须要了解的一个内容。

不同的资源类型,要设置好正确的MIME类型。

那么接下来呢,我们再来讲一讲HTTP,全称:超文本传输协议。

如上图,浏览器向服务器发起一个HTTP请求,服务端则给浏览器返回对应的内容。

HTTP请求分为4部分,分别是请求行请求头、空行请求体

HTTP响应也凤尾4部分,分别是响应行响应头空行响应体

其实HTTP请求和响应是一样的,只不过名词不一样而已。

如上图所示,我们通过浏览器的调试面板,可以看到请求和响应的具体内容。

其中(1)处是请求行,(2)处是请求头,(3)处是响应头。

那么标头紧挨着的“负载”,就是请求体

负载右边“预览”就是响应体

预览右侧的“响应”也是响应体,这是返回数据的原始格式,预览只是可以更方便地查看和操作响应体。

了解和认识MIME和HTTP请求,是Web全栈开发的前提和基础。

下一节内容,我们继续完善Web框架,最终用我们自己写的Web框架,做一个前后分离的,个人博客项目。

思维导图生成中,请稍候...

问题 1: 什么是MIME类型?
回答: MIME(多用途互联网邮件扩展类型)是一种标准,用于标识互联网上传输的文件类型。它帮助浏览器正确解析和显示不同类型的资源,如HTML、CSS、JavaScript、图片等。

问题 2: MIME类型在网页加载中起什么作用?
回答: MIME类型通过HTTP响应头中的Content-Type属性告诉浏览器如何处理服务器返回的资源。例如,text/css表示CSS文件,text/javascript表示JavaScript文件,浏览器根据这些类型进行相应的解析和渲染。

问题 3: 如果MIME类型缺失或错误,网页还能正常显示吗?
回答: 是的,现代浏览器具备较强的容错能力,即使MIME类型缺失或错误,浏览器也能根据上下文推断资源类型并正确解析。

问题 4: HTTP请求和响应的结构是怎样的?
回答: HTTP请求分为四部分:请求行、请求头、空行和请求体。HTTP响应也分为四部分:响应行、响应头、空行和响应体。请求和响应的结构类似,只是名词不同。

问题 5: 如何在浏览器中查看HTTP请求和响应的详细信息?
回答: 可以通过浏览器的调试面板查看HTTP请求和响应的详细信息。请求行、请求头、响应头、请求体(负载)和响应体(预览或原始格式)都可以在调试面板中查看。

问题 6: 为什么在开发Web框架时需要了解MIME?
回答: 在开发Web框架时,了解MIME类型是必要的,因为不同的资源类型需要设置正确的MIME类型,以确保浏览器能够正确解析和显示这些资源。

问题 7: HTTP的全称是什么?
回答: HTTP的全称是“超文本传输协议”,它是用于在Web上传输超文本(如HTML)的应用层协议。

问题 8: 什么是HTTP请求体?
回答: HTTP请求体是HTTP请求的一部分,通常包含客户端发送给服务器的数据,如表单数据或文件上传内容。

问题 9: 什么是HTTP响应体?
回答: HTTP响应体是HTTP响应的一部分,包含服务器返回给客户端的数据,如HTML页面、JSON数据或文件内容。

问题 10: 为什么了解MIME和HTTP是Web全栈开发的基础?
回答: 了解MIME和HTTP是Web全栈开发的基础,因为它们涉及到客户端和服务器之间的数据传输和资源解析,是构建和优化Web应用的关键技术。