这是我参与[第五届青训营]笔记创作活动的第五天
本课堂重点内容:
- HTTP 协议的基本定义
- HTTP 协议主要特征
- HTTP 协议发展历程
- HTTP 协议的报文结构
- 场景分析: 静态资源 and 登录
- HTTP 协议实战:浏览器 and Node篇
- 网络优化手段
- HTTP 协议拓展:通信方式
详细知识点介绍:
何为 HTTP
- HTTP 即 Hyper Text Transfer Protocol(超文本传输协议)
- 应用层协议、基于 TCP 协议
- 请求响应
- 简单可扩展
- 无状态
协议分析 - 报文
Method:
- GET 请求一个指定资源的表示形式,使用 GET 的请求应该只被用于获取数据
- POST 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
- PUT 用请求有效载荷替换目标资源的所有当前表示
- DELETE 删除指定的资源
- Safe(安全的):不会修改服务器数据的方法,如:GET、HEAD、OPTIONS
- ldempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有的 safe 方法都是 ldempotent 的
状态码:
- 1xx 指示信息,表示请求已接收,继续处理
- 2xx 成功,表示请求已被成功接收,理解 如:200 OK - 客户端请求成功
- 3xx 重定向,要完成请求必须进行更进一步的操作 如:301 - 资源被永久转移到其他URL,302 - 临时跳转
- 4xx 客户端错误,请求有语法错误或请求无法实现 如:401 Unauthorized - 请求未经授权,404 - 请求资源不存在,可能是输入了错误的 URL
- 5xx 服务器端错误,服务器未能实现合法的请求 如:500 - 服务器内部发生不可预期的错误,504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应
HTTP2
- 比起之前的版本,更快、更稳定、更简单。
- HTTP2 通信的最小单位是 帧,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
- 消息:与逻辑请求或响应消息对应的完整的一系列帧
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
- HTTP2 连接都是永久的,而且只需每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制
HTTPS
- 经过 TSL/SSL 加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密:加密和解密需要使用两个不同的密钥:公钥和私钥
个人课后总结:
如果能够深刻理解 HTTP 通信,能够让我们在日常的前端开发工作中快速定位到问题的所在。