这是我参加[第五届青训营]伴学笔记创作活动的第5天
本堂课堂知识
- 了解HTTP 协议的基本定义、主要特征、发展历程和报文结构
- 了解HTTP协议应用场景
- 了解从浏览器和node实现发起协议,且网络优化手段
当输入一个网址后浏览器会发生什么
发展历程
1.1版本较为常用,目前使用最久,公认的标准版本
2.0版本着重传输过程更加稳定和更加快速
报文结构
以1.1版本为例
1.method方法
| 方法名 | 说明 |
|---|---|
| GET | 请求一个指定资源的表示形式.使用GET的请求应该只被用于获取数据 |
| POST | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用 |
| PUT | 用请求有效载荷替换目标资源的所有当前表示 |
| DELETE | 删除指定的资源 |
| HEAD | 请求一个与GET请求的响应相同的响应,但没有响应体(不常见) |
| CONNECT | 建立一个到由目标资源标识的服务器的隧道。(不常见) |
| OPTIONS | 用于描述目标资源的通信选项。(不常见) |
| TRACE | 沿着到目标资源的路径执行一个消息环回测试。(不常见) |
| PATCH | 用于对资源应用部分修改。 |
不常见是指在项目开发中,前后端关于请求方面不太使用,但是如果需要抓包就可能会碰到。
部分请求特点:
GET/HEAD/OPTIONS-安全safe(不会修改服务器数据的方法)
GET/HEAD/OPTIONS/PUT/DELETE-幂等Idempotent(同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的;所有safe的方法都是Idempotent的)
2.code状态码
RUSTful API:一种API设计风格
- 每一个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method ,对服务器端资源进行操作,实现表现层状态转化"。
| URI | URL | |
|---|---|---|
| 含义 | 统一资源标识符,比如DNA,户籍,身份证等标识人,那这些都是URI | 是通过网络路径地址标记资源的符号, |
| 关系 | URI是URL的超集 | URL是URI的子集 |
| 组成 | 标记资源的方式多种多样 | 协议+//+域名+端口+路径+文件+?+参数+#+锚定 |
3.请求与响应
常见请求头
常见响应头
4.缓存(面经出现考题)
- 强缓存-如果资源本地已存在直接使用 code200
- Expires以时间戳形式倒计时
- Cache -Control可缓存性
- no-cache :协商缓存验证
- no-store :不使用任何缓存
- 缓存有效期 max-age:单位是
秒,存储的最大周期从请求开始时间 - 是否需要重新验证/重新加载 must-revalidate :一旦资源过期,在成功向原始服务器验证之前,不能使用。若没有设置这个属性,与服务器断开后允许下使用本地缓存。
- 协商缓存-与server端协商缓存资源能否使用且特定版本,彼此通信验证 code304
- Etag/If-None-Match :资源的特定版本的标识符,类似于指纹
- Last-Modified /If-Modified -Since :最后修改时间
5.cookie
响应中set-cookie
推荐
- An overview of HTTP - HTTP | MDN
- 图解 HTTP
- HTTP 权威指南
==>
HTTP2能够更快更稳定的原因
以帧作为最小单位,二进制编码
消息:与逻辑请求或响应消息对应的完整的一系列帧。
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
交错发送,接收方重组织
永久连接,且每个来源仅需一个连接
流控制:阻止发送方向接收方发送大量数据的机制(比如暂停视频不再接收接下来的数据流)
服务器推送
HTTPS
经过TSL/SSL加密
场景分析-以toutiao.com为例
静态资源方案
缓存+CDN(内容分发)+文件名hash(文件发生变化时而变化确保最新资源)
通过用户就近性和服务器负载均衡的判断,CDN确保内容以一种极为高效的方式为用户请求提供服务
跨域问题cross-origin导致options请求
上面两个会被认定为同域,因为https默认是443端口号
跨域解决方法:CORS,代理服务器
鉴权方案
SSO:单点登录
浏览器中发协议
AJAX
XHR
readyState通过0-4表示不同的请求阶段
Fetch
node中发协议
标准库:HTTP/HTTPS
常用请求库:axios
用户体验
网络优化
例如:
稳定性
- 重试是保证稳定的有效手段,但防止加剧恶劣情况(服务器雪崩)
- 缓存合理使用,作为最后一道防线
扩展-通信方式
WebSocet
全双工,实时要求高(eg.聊天室)
URL使用ws://或wss://开头