这是我参与「第五届青训营 」笔记创作活动的第5天
一、本堂课重点内容:
- HTTP 协议的基本定义
- HTTP 协议主要特征
- HTTP 协议发展历程
- HTTP 协议的报文结构
- 场景分析 - 静态资源
- 场景分析 - 登录
- HTTP 协议实战 - 浏览器
- HTTP 协议实战 - Node篇
- 网络优化手段
- HTTP 协议拓展 - 通信方式
二、详细知识点介绍:
- HTTP 协议的基本定义
- Hyper Text Transfer Protocol 超文本传输协议
- HTTP 协议主要特征
- 应用层协议,基于TCP协议
- 请求响应
- 简单可拓展
- 无状态
- HTTP 协议发展历程
- HTTP/0.9 单行协议
- 请求GET/mypage.html
- 响应只有HTML文档
- HTTP/1.0 构建可扩展性
- 增加了Header
- 有了状态码
- 支持多种文档类型
- HTTP/1.1 标准化协议
- 链接复用
- 缓存
- 内容协商
- HTTP/2 更优异的表现
- 二进制协议
- 压缩header
- 服务器推送
- HTTP/3 草案
- HTTP 协议的报文结构
这里说的是HTTP/1.1的报文结构
Method
Safe(安全的):不会修改服务器的数据的方法; GET HEAD OPTIONS
Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是Idempotent的; GET HEAD OPTIONS PUT DELETE
状态码
200 OK -客户端请求成果
301 -资源(网页等)被永久转移到其他URL
302 -临时跳转
401 Unauthorized -请求未经授权
404 -请求资源不存在,可能是输入了错误的URL
500 -服务器内部发生了不可预期的错误
504 Gateway Timeout -网关或者代理的服务器无法在规定的时间内获得想要的响应
常用请求头
Accept:接收类型,表示浏览器支持的MIME类型
Content-Type:客户端发送出去实体内容的类型
Last-Modified:请求资源的最后修改时间
Expires:应该在什么时候认为文档已经过期,从而不再缓存它
ETag:资源的特定版本的标识符,Etags类似于指纹
Max-age:客户端的本地资源应该缓存多少秒,开启了Cache-Control后有效
Set-Cookie:设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端
Server:服务器的一些相关信息
Access-Control-Allow-Origin:服务器端允许的请求Origin头部(譬如为*)
缓存
- 场景分析 - 静态资源
静态资源方案:缓存+CDN+文件名hash
- CDN:Content Delivery Network
- 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
- 场景分析 - 登录
- HTTP 协议实战
AJAX之XHR
- XHR:XMLHttpRequest
- readyState
AJAX之Fetch
- XMLHttpRequest的升级版
- 使用Promise
- 模块化设计,Response,Request,Header对象
- 通过数据流处理对象,支持分块读取
标准库:HTTP/HTTPS
- 默认模块,无需安装其他依赖
- 功能有限/不是十分友好
常用的请求库:axios
- 支持浏览器、nodejs环境
- 丰富的拦截器
- 网络优化手段
- HTTP 协议拓展 - 通信方式
WebSocket
- 浏览器与服务器进行全双工通讯的网络技术
- 典型场景:实时性要求高,例如聊天室
- URL使用
ws://或wss://等开头
四、课后个人总结:
- 老师上课十分详细,讲得也很通俗易懂,就是感觉有较多记忆性的东西
- HTTP主要还是基于各种协议和一些标准库来进行数据传输