🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
文章目录
- HTTP 哪些常用的状态码及使用场景?
- 什么是HTTP协议的头字段?
- HTTP1.0,1.1,2.0 的版本区别
HTTP 哪些常用的状态码及使用场景?
超文本传输协议(HTTP)是一种用于在客户端和服务器之间传输数据的应用层协议。它使用请求-响应模型,客户端发送请求到服务器,服务器返回响应给客户端。在 HTTP 响应中,状态码是一个三位数字,用于表示服务器对请求的处理结果。以下是一些常用的 HTTP 状态码及其使用场景:
-
200 OK:表示请求成功,服务器已成功处理并返回了所请求的资源。这是最常见的状态码,通常表示客户端请求的操作已成功完成。
-
301 Moved Permanently:表示请求的资源已永久移动到新的位置。客户端应该使用响应中的
Location
头部字段中提供的新 URL 来访问资源。 -
302 Found:表示请求的资源临时移动到新的位置。与 301 类似,但客户端不应该将新 URL 存储为永久的。
-
400 Bad Request:表示客户端发送的请求有问题,服务器无法理解或无法处理。可能是由于请求的语法错误、缺少必要的参数等原因。
-
401 Unauthorized:表示请求需要进行身份验证,但客户端没有提供有效的凭证。服务器将拒绝该请求,除非客户端提供了正确的身份验证信息。
-
403 Forbidden:表示客户端请求的资源被禁止访问。可能是由于权限不足、IP 地址被禁止等原因。
-
404 Not Found:表示服务器上找不到所请求的资源。可能是由于 URL 错误、资源已被删除等原因。
-
500 Internal Server Error:表示服务器遇到了内部错误,无法完成请求。这可能是由于服务器端的编程错误、数据库错误等原因。
-
502 Bad Gateway:表示充当代理或网关的服务器无法从上游服务器获取到有效的响应。
-
503 Service Unavailable:表示服务器当前无法处理请求,可能是由于服务器维护、过载等原因。
这些状态码只是 HTTP 状态码的一部分,还有其他状态码用于表示不同的情况。了解常见的 HTTP 状态码及其使用场景有助于诊断和解决在与 Web 服务器通信时遇到的问题。
什么是HTTP协议的头字段?
HTTP(超文本传输协议)的头字段是指在 HTTP 请求和响应中,用于传递额外信息和元数据的部分。它们位于 HTTP 消息的头部,用于向客户端和服务器提供关于请求和响应的更多详细信息。
头字段由名称和值组成,以键值对的形式出现,格式为"名称: 值"。常见的 HTTP 头字段包括以下几种:
-
请求头字段:这些头字段包含了客户端向服务器发送的请求信息,例如:
User-Agent
:客户端的浏览器类型和版本。Accept
:客户端接受的响应内容类型。Accept-Language
:客户端接受的语言。Content-Type
:请求体的内容类型。Content-Length
:请求体的长度。
-
响应头字段:这些头字段包含了服务器向客户端发送的响应信息,例如:
Server
:服务器的软件名称和版本。Content-Type
:响应体的内容类型。Content-Length
:响应体的长度。Cache-Control
:缓存控制指令。Last-Modified
:资源的最后修改时间。
头字段的作用是向客户端和服务器提供关于请求和响应的更多元数据信息,帮助它们更好地理解和处理 HTTP 通信。它们可以用于协商内容类型、设置缓存策略、传递身份验证信息等。
HTTP1.0,1.1,2.0 的版本区别
HTTP1.0,1.1,2.0的版本区别如下:
- 二进制分帧:HTTP1.1在应用层以纯文本的格式进行通信,而HTTP2.0则在应用层和传输层之间增加了一层二进制分帧层。在二进制分帧层中,HTTP2.0会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制的格式进行编码。
- 多路复用:HTTP1.1中浏览器在同一时间针对同一域名下的请求有一定数据的限制,超过了这个限制请求就会被阻塞。而多路复用允许同时通过单一的连接发起多重的请求。
- header压缩:HTTP1.1中的header带有大量的信息,而且每次都要重复发送。而HTTP2.0为了减少这部分的开销,采用了HPACK头部压缩算法对header进行压缩。
- 服务端推送:HTTP 的队头阻塞问题。
下面是HTTP 1.0,1.1和2.0版本之间的一些主要区别的表格总结:
特性 | HTTP 1.0 | HTTP 1.1 | HTTP 2.0 |
---|---|---|---|
持久连接 | 不支持 | 默认支持 | 默认支持 |
流水线请求 | 不支持 | 支持 | 支持 |
头部压缩 | 不支持 | 不支持 | 支持 |
多路复用 | 不支持 | 不支持 | 支持 |
服务器推送 | 不支持 | 不支持 | 支持 |
请求优先级 | 不支持 | 不支持 | 支持 |
加密 | 不支持 | 可选支持 | 可选支持 |
响应速度 | 相对较慢 | 较快 | 更快 |
性能优化 | 较少 | 较多 | 更多 |
HTTP 1.1引入了持久连接,可以在单个TCP连接上发送多个请求和响应,从而减少了建立和关闭连接的开销。它还引入了流水线请求,允许客户端在不等待响应的情况下连续发送多个请求。然而,HTTP 1.0和1.1都没有对请求和响应的头部进行压缩。
HTTP 2.0引入了头部压缩机制,可以显著减少传输的数据量。它还支持多路复用,允许多个请求同时在单个连接上进行,提高了性能。HTTP 2.0还支持服务器推送,服务器可以在客户端请求之前主动推送一些资源。此外,HTTP 2.0还引入了请求优先级,可以指定请求的重要性。有时候也会与 HTTPS 一起使用以提供加密传输。
总的来说,HTTP 2.0在性能和功能方面相较于HTTP 1.0和1.1有较大的改进,但需要服务器和客户端都支持才能发挥其优势。