1. HTTP 协议用于客户端 和服务器之间通信
2. 通过请求 和响应交换达成通信
客户端发送的为
请求报文
请求报文
: 请求方法, 请求URI , 协议版本, 可选请求首部字段和内容实体构成。
服务端发送的为
响应报文
: 协议版本, 状态码, 解释状态码原因短语, 可选响应首部字段以及主体构成
响应报文
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZuBnLzADNmJDM0ImZ0QTNzMTYyMGO1EjY3YWM3YzYiJzN5gzLcFzN3gDM4UzLcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
3. HTTP 无状态协议
无状态协议: HTTP协议不对请求和响应之间的通信状态进行保存。
优点: 可以更快处理大量事务,确保协议的可伸缩性。
HTTP 要想实现保持状态,就得依靠
Cookie
4. 通过URI 来定位资源
5. 持久连接通信
在HTTP 1.0 中, 每进行一次HTTP通信就要断开一次TCP连接。
假定在访问一个HTML 文件时,它包括图片,音频.... , 它在请求HTML文件时,同时会断开重新连接请求图片,音频...文件,重复循环,知道请求完,造成了不必要得TCP 连接消耗。
持久连接: 只要任意一段没有断开连接,那么
TCP
就不会断开连接。
优点: 减少了TCP 连接开销,减轻了服务器的负载。
它还有一个特性就是
管线化
管线化: 在请求多的时候,不会因为堵塞而影响请求加载,它是异步的,不是同步加载请求。
HTTP 1.1 默认是持久连接。 HTTP 1.0 没有标准化。
6. Cookie 状态管理
Cookie 是用来 解决HTTP 不能记录状态而生的,Cookie 是通过在请求报文和响应报文中写入Cookie 来控制客户端状态
萨达
流程:
- 客户端发送请求
- 服务端接收请求,设置Set-Cookie 来设置Cookie信息
- 客户端接收Cookie,每次发送请求携带Cookie
- 服务端每次接收Cookie 来判定是否失效,执行接下来的请求
HTTP 报文
HTTP 报文由和
报文首部
组成。
报文主体
HTTP 报文首部组成
请求报文和响应报文首部由以下组成:包含: 请求方法,请求URI 和HTTP版本
- 请求行
包含: 状态码, 原因短语, HTTP版本
- 状态行
包含: 通用首部, 请求首部, 响应首部, 实体首部。
- 首部字段
状态码
状态码是 当客户端向服务端发送请求,服务端返回的一种响应,用户知道当前处理的情况如何。
状态码以3位数字和原因短语组成。
状态码类别
类别 | y原因短语 | |
---|---|---|
1xx | x信息性状态码 | j接收的请求正在处理 |
2xx | 成功状态码 | 请求处理完毕 |
3xx | 重定向状态码 | 需要进行附加操作完成请求 |
4xx | 客户端错误原因状态码 | 服务器无法处理请求 |
5xx | 服务器错误状态码 | 服务器处理请求出错 |
2xx
- 200 OK 服务端正常处理了
- 204 No Content 客户端发送成功了,服务端不返回任何信息
- 206 Partial Content 客户端进行范围请求
3xx
- 301 Moved Permanently永久重定向
- 302 Found 临时重定向
- 304 Not Modified 客户端发送请求,服务端没找到符合资源,不做返回
- 307 Temporary Redirect 临时重定向
4xx
- 400 Bad Request 报文中存在语法错误,格式传递不对
- 401 Unauthorized 请求验证失败(用户验证失败)
- 403 Forbidden 客户端发起请求,别拒绝(权限授权访问)
- 404 Not Found 服务器上无法找到请求资源。
5xx
- 500 Internal Server Error 服务器端出现了问题
- 503 Service Unavailable 服务器处于超负荷和停机