这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
今天主要跟着杨超男老师学习了Http协议的知识,充分弥补了我理论方面较为匮乏的知识,收获很大。
一,本节课重点内容
本节课主要讲了
- http的背景和特点
- 报文结构
- 发展历史
- 常见场景
- 在浏览器和node中的实际使用
- 除了http外其他的协议
二,详细知识介绍
我们在打开浏览器后出现的网页信息等等往往会使用http用于传输。http全称超文本传输协议(Hyper Text Transfer Protocol),他是一个应用层协议,基于TCP的协议。
它具有如下特性
- 请求和响应
- 简单可扩展
- 无状态
附一下杨老师的图
http协议从最早的只支持get,响应只有html的http0.9不断发展,到简单可扩展的http1.0,这时候的http就开始支持多种文档类型了,还增加了状态码和header。到http1.1的时候http又增加了很多特性,包括经典的缓存,链接复用,内容协商等等。http1.1已经属于标准化的http协议了,有一些公司还在用http1.1。到了更新的http2了,它具有更优异的表现,支持二进制协议,压缩header,服务器推送......现在已经推出http3的草案了。
接下来我们又学习了htto报文
| Method | decription |
|---|---|
| Get | 请求一个指定资源的表示形式,使用Get请求应该只被用于获取数据 |
| Post | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用 |
| Put | 用请求有效载荷替换目标资源的所有当前表示 |
| Delete | 删除指定的资源 |
| Head | 请求一个和Get请求的响应相同的响应,但是没有响应体 |
| Connect | 建立一个由目标资源标识的服务器隧道 |
| Options | 用于描述目标资源的通信选项 |
| Trace | 沿着到目标资源的路径执行一个消息环回测试 |
| Patch | 用于对资源应用部分修改 |
我们在使用Method的时候往往会考虑两点:
- Safe:不会修改服务器数据的方法
- Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有Safe的方法都幂等的。
接下来我们看一下协议状态有码
- 200---OK
- 301---资源(网页等)被永久迁移到其他URL
- 302---临时跳转
- 401---请求未被授权
- 404---请求的资源不存在,可能受输入了错误的URL
- 500---服务器内部发生了不可预期的错误
- 504---Gateway Time Out
接下来老师介绍了RestFul风格和请求头。附上杨老师的图
接下来老师介绍了缓存的知识,包括强缓存和协商缓存或者可以指定不使用任何缓存。
接下来老师详细介绍了cookie。
| Name=value | 各种cookie的名称和值 |
|---|---|
| Expires=Date | Cookie的有效期,缺省时Cookie仅在浏览器关闭之前有效 |
| Path=Path | 限制指定的Cookie的发送范围的文件目录,默认是当前 |
| Domain=domain | 限制Cookie生效的域名,默认为创建Cookie服务的域名 |
| Secure | 仅在Https安全连接时,才可以发送cookie |
| HttpOnly | Js脚本无法获取Cookie |
| SameSite=[None,strict,Lax] | None同站跨站请求都可以发送,Strict仅在同站可以发送,Lax允许与顶级导航栏一起发送,并与第三方网站发起的get请求一起发送 |
接下来老师详细介绍了Https和Http2的特性。
然后老师教了我们打开控制台调试网络请求,查看首发信息。接下来又带我们实际分析了一下登录的场景。最后实战教了我们Ajax,axios发送请求,最后介绍了新协议QUIC的特点,超强的性能与安全,并解决了拥堵问题等。
收获
这节课充分弥补了我理论方面较为匮乏的知识,收获很大。