这是我参与「第四届青训营」笔记创作活动的的第5天
01 初识
- 超文本传输协议
- 应用层协议,基于TCP协议
- 请求 响应
- 简单可扩展
- 无状态
02 协议分析
发展
03 常见场景
状态码200 一定发起了请求吗?
- (from …… cache)从本地缓存拿到,不一定经过网络链路
静态资源方案:缓存+CDN+文件名hash
- CDN:Control Delivery Network
- 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供效率
怎么确保用户拿到的是最新的?
- 改变文件名:版本号
为什么会有option请求?
- 跨域,cross-origin
跨域解决方案
- CORS
- 代理服务器
- 同源策略是浏览器的安全策略,不是HTTP的
- Iframe
- 诸多不便
登录
- Session + cookie
- JWT ( JSON web token )
SSO:单点登录(Single Sign On)
04 实际应用
浏览器篇
AJAX之XHR
- XHR:XMLHttpRequest
- redayState
AJAX之Fetch
- XMLHttpRequest的升级版
- 使用Promise
- 模块化设计,Response,Request,Header对象
- 通过数据流处理对象,支持分块读取
node篇
标准库:HTTP/HTTPS
- 默认模块,无需安装其他依赖
- 功能有限/不是十分友好
常用的请求库:axios
- 支持浏览器、nodejs环境
- 丰富的拦截器
- 重试是保证稳定的有效手段,但要防止加剧恶劣情况
- 缓存合理使用,作为最后一道防线
05 了解更多
通信方式
WebSocket
- 浏览器与服务器进行全双工通讯的网络技术
- 典型场景:实时性要求高,例如聊天室
- URL 使用 ws://或 wss://等开头
QUIC:Quick UDP Internet Connection
- 0-RTT 建联(首次建联除外)。
- 类似TCP的可靠传输。
- 类似TLS的加密传输,支持完美前向安全。
- 用户空间的拥塞控制,最新的BBR算法。
- 支持h2的基于流的多路复用,但没有TCP的HOL问题。
- 前向纠错FEC。
- 类似MPTCP的Connection migration。