前后端 HTTP
HTTP,Hyper Text Transfer Protocol,即超文本传输协议。
一、什么是 HTTP ?
HTTP 基于 TCP/IP 通信协议
HTTP 定义了浏览器(即万维网客户)怎么向万维网服务器请求万维网文档,以及服务器怎么将文档传送给浏览器
HTTP 是短连接的
建立 TCP 连接后就开始传输数据,数据传输结束后就释放连接
HTTP 是无状态的,它并没有 “记忆”,每次 HTTP 请求都是独立的
HTTP 是媒体独立的
任何类型的数据都可以通过 HTTP 传送
二、请求报文

1. 请求行
方法,即请求方法
- OPTION:用于跨域预检
 - GET
 - HEAD:用于读取信息首部
 - POST
 - PUT
 - DELETE
 - TRACE:用于环回测试
 - CONNECT:用于代理服务器
 
常用的请求方式是 GET 和 POST,其中:
- GET 传递的内容通过 URL 传递,POST 传递的内容放在请求体中
 - GET 在浏览器回退时是无害的,而 POST 会再次提交请求
 - GET 产生的 URL 地址可以被保存,而 POST 不可以,因此
- GET 请求可以被保存,而 POST 不可以
 - GET 请求可以被保存在历史记录中
 
 - GET 传递的内容有长度限制,而 POST 没有
 - POST 相对”更安全”
 
URL
版本
2. 首部行
3. 实体主体
通常不存在。
三、响应报文

1. 状态行
版本
状态码
- 响应状态码都是 3 位数字
 - 分类:
- 1XX:表示客户端的请求未完成
 - 2XX:成功
 - 3XX:重定向
 - 4XX:客户端错误
 - 5XX:服务器端错误
 
 
短语,用于描述状态码
2. 首部行
Content-Type:服务器告诉客户端本次响应体的数据格式及编码格式
Content-disposition:服务器告诉客户端以什么格式打开响应体数据
- in-line:默认值,在当前页面打开
 - attachment;filename=xxx:以附件形式打开响应体
 
3. 实体主体
可能存在,用于放置响应内容。
四、HTTP/1.1
- 支持持久连接:
- HTTP/1.0 是短连接,每次 HTTP 请求都会建立和释放 TCP 连接,这将造成巨大的开销
 - HTTP/1.1 增加了 “持久连接” 机制,多个 HTTP 请求可以复用同一个 TCP 连接
 
 - 请求头中新增了 host 字段,用于指明服务器的域名
 
五、HTTP/2
HTTP/1.1 中,报文头为文本,数据体为文本或二进制;HTTP/2.0 中,报文头和数据体都是二进制
HTTP/2.0 中,多个 HTTP 请求不仅可以复用同一个 TCP 连接,而且还可以同时发送,不需要串行发送
HTTP/2.0 支持头信息压缩,一方面,头信息会使用 gzip/compress 压缩;另一方面,客户端和服务器都会维护一个头信息表,从而避免相同字段的重复发送
HTTP/2.0 允许服务器主动向客户端发送静态资源
六、HTTP/3
HTTP/3 基于 QUIC 协议。
QUIC,Quick UDP Internet Connection,其目的是替代 TCP,它具有类似 TCP 的连接管理、拥塞窗口、流量控制等网络特性,并且具有更快建立连接、更低延迟等特点。