这是我参与「第四届青训营 」笔记创作活动的的第7天。
初识HTTP
Hyper Text Transfer Protocol超文本传输协议
-
应用层协议,基于TCP协议
-
请求 响应
-
简单可扩展
-
无状态
协议分析
发展
报文
- 特性:
-
safe(安全的):不会修改服务器的数据的方法。GET、HEAD、OPTIONS
-
idempotent(幂等)同样的请求被执行一次与连续执行多次的效果是一样的,服务器状态也是一样的。所有safe的方法都是idempotent的。GET、HEAD、OPTIONS、PUT、DELETE
- 状态码:用三位表示
- RESTful API
-
一种API设计风格(REST - Representational State Transfer)
-
每一个URL代表一种资源;
-
客户端和服务器之间,传递这种资源的某种表现层;
-
客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
- 常用请求头
- 常用响应头
- 缓存
- 强缓存
- 协商缓存
- cookie
HTTP/2
-
概述:更快、更稳定、更简单
-
帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会识别出当前帧所属的数据流。
-
消息:与逻辑请求或响应消息对应的完整的一系列帧。
-
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
-
交错发送,接收方重组织。
-
复用性:HTTP/2连接都是永久的,而且仅需要每个来源一个连接。
-
流控制:阻止发送方向接收方发送大量数据的机制。
HTTPS(Hypertext Transfer Protocol Secure)
在HTTP的基础上经过TSL/SSL加密
-
对称加密:加密和解密都是使用同一个密钥。
-
非对称加密:加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)
常见场景
打开浏览器 ->打开控制台(右键-检查;或者F12)->切换到network
- 静态资源
-
静态资源方案:缓存+CDN+文件名hash
-
CDN:Content Delivery Nrtwork
- 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
- 登录
-
业务场景(表单登录、扫码登录)
- 跨域
- 跨域解决方案
- CORS
- 代理服务器
- 同源策略是浏览器的安全策略,不是HTTP的、诸多不便
-
技术方式
SSO(Single Sign On):单点登录
实际应用
- 浏览器篇
-
AJAX之XHR
-
AJAX之Fetch
-
XMLHttpRequet的升级版
-
使用Promise
-
模块化设计,Response,Request,Header对象
-
通过数据流处理对象,支持分块读取
-
- node篇
-
标准库:HTTP/HTTPS
-
默认模块,无需安装其他依赖
-
功能有限/不是十分友好
- 用户体验
-
网络优化
-
CDN是否开启H2的性能对比
-
预解析、预连接
-
-
稳定性
-
重试是保证稳定的有效手段,但要防止加剧恶劣情况
-
缓存合理使用,作为最后一道防线
-
了解更多
-
通信方式
WebSocker
-
浏览器与服务器进行全双工通讯的网络技术
-
典型场景:实时性要求高
-
URL使用ws://或wss://等开头
- QUIC:Quick UDP Internet Connection