HTTP(超文本传输协议)是用于传输超媒体文档(例如HTML)的应用层协议。这是Web上所有数据交换的基础。以下是HTTP的主要版本以及每个版本新增的功能的概括:
HTTP/0.9
- 发布年份: 1991
-
主要特性:
- 只有一个命令
GET
。 - 没有HEADER等元数据。
- 服务器发送完毕,就关闭TCP连接。
- 只有一个命令
HTTP/1.0
- 发布年份: 1996
-
主要特性:
- 引入了新的HTTP方法(如
POST
和HEAD
)。 - 状态码的引入,用于表示服务器的响应状态。
- HTTP头的引入,允许传输元数据。
- 支持多种类型的MIME类型。
- 无状态的连接但每个请求/响应对都打开一个新的连接。
- 引入了新的HTTP方法(如
HTTP/1.1
- 发布年份: 1997
-
主要特性:
- 持久连接(连接复用),减少了建立和关闭连接的频率。
- 引入了分块传输编码,允许响应数据分块发送。
- 新增缓存处理指令(如ETags)。
- 更多的HTTP方法(如
OPTIONS
,PUT
,DELETE
,TRACE
和CONNECT
)。 - 支持虚拟主机(一个IP可以托管多个域名)。
- 提供了对管道化的支持(允许在前一个请求响应之前发送下一个请求)。
HTTP/2
- 发布年份: 2015
-
主要特性:
- 二进制协议,不再是纯文本。
- 多路复用,单一连接上可以并行交错的请求和响应。
- 头信息压缩(HPACK),减少了头部大小。
- 服务器推送,服务器可以对一个客户端请求发送多个响应。
- 提高了安全性(经常与TLS结合使用)。
HTTP/3
- 发布年份: 正在开发中,未正式发布。
-
主要特性:
- 基于QUIC协议,这是一个新的传输层网络协议。
- QUIC内建TLS加密支持,改进了安全性和连接时延。
- 改进的拥塞控制。
- 连接迁移,允许连接在网络改变时保持不中断。
- 更快的连接启动时间。
在Web开发中,HTTP状态码用于表示服务器对HTTP请求的响应状态。以下是一些常用的HTTP状态码及其含义:
1xx - 信息响应
- 100 Continue - 客户端应继续其请求
- 101 Switching Protocols - 服务器根据客户端的请求切换协议
2xx - 成功
- 200 OK - 请求成功,操作被成功接收并处理
- 201 Created - 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立
- 202 Accepted - 请求已接受,但尚未处理
- 204 No Content - 服务器成功处理了请求,但不需要返回任何实体内容
3xx - 重定向
- 301 Moved Permanently - 请求的网页已永久移动到新位置
- 302 Found - 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
- 304 Not Modified - 自从上次请求后,请求的网页未修改过
4xx - 客户端错误
- 400 Bad Request - 服务器无法理解请求的格式,客户端不应该尝试再次使用相同的内容进行请求
- 401 Unauthorized - 请求未授权,这个状态代码表示当前请求需要用户验证
- 403 Forbidden - 服务器理解请求客户端的请求,但是拒绝执行此请求
- 404 Not Found - 服务器找不到请求的网页
- 405 Method Not Allowed - 请求行中指定的请求方法不能被用于请求相应的资源
- 429 Too Many Requests - 客户端的请求次数超过限额
5xx - 服务器错误
- 500 Internal Server Error - 服务器遇到了一个未曾预料的状况,导致它无法完成对请求的处理
- 501 Not Implemented - 服务器不支持当前请求所需要的某个功能
- 502 Bad Gateway - 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
- 503 Service Unavailable - 由于临时的服务器维护或者过载,服务器当前无法处理请求
- 504 Gateway Timeout - 作为网关或代理的服务器,未及时从上游服务器接收请求