这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天。
一、本堂课重点内容:
- 本堂课的知识要点有哪些?
- HTTP 协议的基本定义
- HTTP 协议主要特征
- HTTP 协议发展历程
- HTTP 协议的报文结构
- 场景分析 - 静态资源
- 场景分析 - 登录
- HTTP 协议实战 - 浏览器
- HTTP 协议实战 - Node篇
- 网络优化手段
- HTTP 协议拓展 - 通信方式
二、详细知识点介绍:
- 本堂课介绍了哪些知识点?
http协议
输入地址栏到网页出现:
超文本传输协议,是应用层协议,基于TCP
分为请求 响应
简单可扩展
无状态协议
http1.1是标准化协议,http2.0性能更好(当前用)
标准http/1.1报文
常见参数
method:get/post/head/options
所有幂等的协议都是安全的
状态码:
RESTful API:一种API设计风格,每个uri代表一种资源,
常用请求头:Accept/Content-type:接收类型/客户端发送实体内容的类型;Cache-Control、Cookie、
常用响应头:
缓存:强缓存 协商缓存,强缓存包括Expires,Cache-Control;协商缓存包括Etag/If-None-Match,Last- Modified/If-Modified-Since
读取缓存的优先级:先强缓存,协商缓存
cookie,借助cookie存储用户信息,每个cookie都是键值对,set-cookie-response:
http/2更快更稳定
帧是http/2通信的最小单位,二进制编码通信
消息和数据流
帧是交错发送,接收方重新组织
http/2连接是永久的,且仅需要每个来源一个连接
流控制:组织发送方向接收方发送大量数据的机制
服务器推送
https:http经过TSL/SSL加密
对称加密:加密解密用一个密钥
非对称加密:加密解密用2个不同的密钥,公钥和私钥
补充
- 通信方式
- websocket
- 传输层优化QUIC
三、实践练习例子:
-
场景分析 - 静态资源
方法:F12-network
状态码是200不一定发起了请求,可能是从缓存中读取的from disk cache,可以看缓存策略
静态资源方案:缓存+CDN+文件名hash
-
场景分析 - 登录
preserve log里过滤quick_login,得到两个请求:OPTIONS请求和POST请求
遇到跨域问题:
三者有任何一个部分不一样都是跨域
解决方案:
- CORS,先发起一个预请求问server是否允许,Access-Control-XXX协议头,server通过之后才可以发起真实请求
- 代理服务器,放一个同域的代理服务器,帮我们转发请求(eg:webpack-dev-server)
- Iframe不推荐 真实请求:POST请求向目标域名发起,携带了1.post body(form),2.希望获取json,3.已有的cookie;返回信息:数据格式json;种cookie(set-cookie)
下次登陆为什么还能保留登陆信息?因为http是无状态协议,所以涉及到鉴权方案
session+cookie方案(互相种cookie,和本地信息比较)和JWT(json web token,把token放到请求头里)
点新请求为什么能记录登陆状态?涉及到单点登录SSO
-
利用AJAX发起http请求:
- 浏览器环境:内置XHR对象用来发起请求
- XHR方法
- Fetch方法:XHR的升级版,支持promise
- XHR方法
- node环境
- 基础库
- axios
4. 网络优化
快:
稳定性:
四、课后个人总结:
- 本章有什么知识点不容易掌握?
- 什么地方容易与其他内容混淆?
后面再看一遍,第一遍记不住
五、引用参考:
- 我参考了哪些外部博客/笔记/文章?
- 文章中有什么地方是我参考引用了外部博客/笔记/文章的?