HTTP
超文本传输协议。是客户端与服务端之间请求和应答的标准。
通过TCP协议将HTTP请求报文发送给服务端,服务端传给客户端一个响应报文。
请求与响应报文有哪些字段
请求格式:
- 请求行 例如(GET /images/logo.gif HTTP/1.1) 请求方法 路径+查询参数 协议名/版本
- 请求头 例如(Host:请求的域名/Ip) 告诉服务器我想干什么以及规定的内容格式
- 空行
- 请求体:对于post请求,需要的参数不会放在url上,而是放在请求体中 响应格式:
- 状态行 例如(HTTP/1.1 200 OK)协议名/版本号 状态码 状态字符串
- 响应头 例如 (Content-Type: text/html)对应请求报文中请求头设置的格式
- 空行
- 响应体:请求需要的资源
HTTP 状态码
客户端向服务端发送一个请求,服务端告诉客户端当前请求的状态。
2xx 成功响应:
- 200 OK 请求成功
- 206 Partial Content 服务器处理了部分请求。比如:文件的分片上传。在请求过程中服务端就会处理一部分请求。
3xx 重定向(需要客户端进一步操作才能完成请求)
- 301 Moved Permanently 被请求的资源被移动到新位置。比如:请求一个url,服务端没有该接口,会回应给客户端一个新地址,重定向正确的地址
- 304 Not Modified 客户端发送GET请求,并且请求内容和上次访问的内容一样。即客户端资源未被修改,资源依然可以正常使用。这种情况服务端会返回304,告诉客户端资源直接从内存里拿
4xx 客户端错误
- 401 Unauthorized 请求需要认证信息
- 403 Forbidden 请求被拒绝 比如:由于身份权限 该接口只能后端人员访问,普通用户拒绝访问
- 404 Not Found 请求的内容服务器没有即找不到页面
5xx 服务端错误
- 503 Service Unavailable 服务器没有准备好处理请求。可能是因为服务器停机。
HTTP2.0有什么新特性
- 基于二进制流。将一个TCP 连接分为若干流,每个流中可以传递若干个信息,每个信息由若干个二进制帧组成。
- 多路复用。一个TCP连接,可以处理多个请求。
- 服务器推送。客户端发送获取HTML的请求,服务器会把HTML以及HTML里需要的资源一起发给客户端
- 压缩 Http 首部
- 请求可以设置优先级