什么是HTTP协议
HTTP是Hyper Text Transfer Protocol的缩写,直译为超文本传输协议,是应用层协议,基于传输层的TCP协议的传输协议
HTTP的每个请求都是孤立的,是无状态协议,由请求和响应两部分组成。
HTTP协议的发展过程
1.1版本使用时间最长,15年左右推出的2版本在原有基础上在传输方面进行了更快速更稳定的优化。
协议分析(以1.1版本为例)
大体结构是固定的,但是请求必须要在起始部分声明请求的方法和访问的目标地址;响应必须要给出处理的结果(状态码)
方法分类:
safe:不会修改服务器的数据的方法:GET HEAD OPTIONS
Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的:GET HEAD OPTIONS PUT DELETE
状态码
1开头是指示信息,表示请求已接收,继续处理
2开头表示成功:200 OK-客户端请求成功
3开头需要重定向:
- 301-资源被永久转移到其他URL
- 302-临时跳转
4开头客户端出现错误:
- 401-请求未经授权
- 404-请求资源不存在,可能输入了错误的URL
5开头服务器出现错误:
- 500-服务器内部发生了不可预计的错误
- 504-Gateway Timeout-网管或者代理的服务器无法再规定时间内获得想要的响应
RESTful API
一种API设计风格
常用请求头
常用响应头
具体场景:缓存
缓存分为强缓存和协商缓存
强缓存是本地已存在可以直接使用,协商缓存是需要和server端进行通信验证,要进行协商过程
缓存流程
cookie
携带用户身份相关信息,以键值对形式存在,可以携带访问控制相关的字段,以及安全性相关字段
HTTP2版本
帧(frame):是该协议通信的最小单位,每个帧包含帧头,至少表示出当前帧所属的数据流,用二进制编码的形式传输
消息:是与逻辑请求或响应消息对应的完整的一系列帧
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
帧是可以交错发送不需要按照顺序,接收方再进行重组织
HTTP/2连接是永久的,仅需要每个来源一个连接
流控制:可以主动阻止发送方向接收方发送大量数据的机制
服务器推送:主动推送一些信息给客户端的能力
HTTPS
在HTTP的基础上进行加密,加密过程是对称加密和非对称加密混用