初识 HTTP 协议
1.HTTP 协议的基本定义
——1)超文本传输协议
2)应用层协议,基于TCP协议
3)请求响应
4)简单可扩展
5)无状态
2.HTTP 协议主要特征
3.HTTP 协议发展历程
——1)HTTP/0.9单行协议:请求get/mypage.html;响应只有HTML文档
2)HTTP/1.0构建可拓展性:增加了Header;有了状态码;支持多种文档类型
3)HTTP/1.1标准化协议:链接复用;缓存;内容协商
4)HTTP/2更优异的表现:二进制协议;压缩header;服务器推送
5)HTTP/3草案
4.HTTP 协议的报文结构
——1)Method:GET、POST、PUT...
2)safe(安全的)、idempotent(幂等的)
3)状态码:1xx(接受请求需要处理)、2xx(成功请求)、3xx(重定向)、4xx(客户端错误)、5xx(服务器错误)
4)RESTful API:每一个url代表一种资源、客户端和服务器之间,传递这种资源的某种表现层、客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
5)常用请求头:accept、content-type、cache-control、cookie...
6)常用响应头:content-type、set-cookie、server...
7)缓存:强缓存(绝对时间)、协商缓存
HTTP 协议的应用场景分析
1.场景分析 - 静态资源
——缓存策略、允许所有域名访问、资源类型;缓存+CDN+文件名hash
2.场景分析 - 登录
——1)账号密码登录、打开控制台-network-勾选preserve log-过滤quick_login、观察请求 2)跨域问题:cors、代理服务器、iframe
3)鉴权:session+cookie、json web token(JWT)
4)单点登录SSO(single sign on)
HTTP 协议实战分析
1.HTTP 协议实战 - 浏览器
——1)AJAX之XHR:XHR-XMLHttpRequest;readyState:unsent、opened、headers_received、loading、done
2)AJAX之Fetch:XMLHttpRequest的升级版、使用Promise、模板化设计,Response、Request,Header对象、通过数据流处理对象,支持分块读取
2.HTTP 协议实战 - Node篇
——1)标准库:HTTP/HTTPS-默认板块,无需安装其他依赖;功能有限/不是十分友好
2)常用的请求库:axios:支持浏览器、nodejs环境;丰富的拦截器
3.网络优化手段
4.HTTP 协议拓展 - 通信方式
——1)websocket:浏览器与服务器进行全双工通讯的网络技术;典型场景:实时性要求高,列如聊天室;url使用ws://或wss://等开头
2)QUIC:quick udp internet connection:o-rtt建联(首次建联除外);类似tcp的可靠传输;类似tls的加密传输,支持完美前向安全;用户空间的拥塞控制,最新的BBR算法;支持h2的基于流的多路复用,但没有TCP的HOL问题;前向纠错FEC;类似MPTCP的connection migrantion