-
这是我参与「第四届青训营 」笔记创作活动的第7天
以下为日常上课笔记,有关于HTTP的一些基础内容
-
初识HTTP
-
背景知识
-
概念
-
什么是HTTP
-
Hyper Text Transfer Protocol
-
超文本传输协议
-
-
-
特点
-
应用层协议,基于TCP协议
-
请求响应
-
简单可扩展
-
无状态
-
-
-
协议分析
-
报文解析
-
HTTP/1.1
-
Method
-
Safe(安全的)
-
不会修改服务器的数据的方法
-
有GET HEAD OPTIONS
-
-
ldempotent (幂等)
-
同样的请求被执行一-次与连续执行多次的效果是一样的,服务器的状态也是一样的
-
所有safe的方法都是Idempotent的
-
有GET HEAD OPTIONS PUT DELETE
-
-
-
状态码
-
RESTful API
-
一种API设计风格
-
REST - Representational State Transfer
-
特点
-
(1) 每一个URI代表一 种资源
-
(2) 客户端和服务器之间,传递这种资源的某种表现层
-
(3)客户端通过HTTP method, 对服务器端资源进行操作,实现"表现层状态转化"
-
-
举例
-
-
常用请求头
-
举例
-
-
常用响应头
-
举例
-
-
缓存
-
分类
-
强缓存
-
协商缓存
-
-
流程
-
-
cookie
-
Set-Cookie - response
-
-
-
持续发展
-
总体
-
HTTP/2
-
特点
-
更快、更稳定、更简单
-
帧(frame) : HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。
-
二进制
-
消息:与逻辑请求或响应消息对应的完
-
整的一系列帧
-
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
-
交错发送,接收方重组织
-
HTTP/2连接都是永久的,而且仅需要每个来源一个连接
-
流控制:阻止发送方向接收方发送大量数据的机制
-
服务器推送
-
-
对比
-
-
HTTPS
-
概述
-
HTTPS : Hypertext Transfer Protocol Secure
-
经过TSL/SSL加密
-
-
补充
-
对称加密:加密和解密都是使用同一个密钥
-
非对称加密,加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)
-
-
流程
-
对比
-
-
-
-
常见场景
-
场景分析
-
静态资源
-
方案:缓存+CDN+文件名hash
-
CDN : Content Delivery Network
-
通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
-
-
登陆
-
业务场景
-
表单登录
-
扫码登录
-
分析
-
鉴权
-
SSO :单点登录Single Sign On
-
流程
-
-
same-origin和cross-origin
-
三处只要有不同则为cross-origin
-
举例
-
-
跨域
-
CORS ( Cross-Origin Resource Sharing )
-
预请求:获知服务端是否允许该跨源请求(复杂请求)
-
相关协议头
-
Access-Control-Allow-Origin
-
Access-Control-Expose-Headers
-
Access-Control-Max- Age
-
Access-Control-Allow-Credentials
-
Access-Control-Allow-Methods
-
Access-Control-Allow-Headers
-
Access-Control-Request-Method
-
Access-Control-Request-Headers
-
Origin
-
-
流程
-
跨域解决方案
-
CORS
-
代理服务器
-
同源策略是浏览器的安全策略,不是HTTP的
-
-
Iframe
-
诸多不便
-
-
-
-
-
-
技术方式
- SSO
-
-
-
实际应用
-
浏览器
-
AJAX之XHR
-
XHR: XML HttpRequest
-
readyState
-
简单实现
-
-
AJAX之Fetch
-
特点
-
XMLHttpRequet的升级版
-
使用Promise
-
模块化设计,Response、Request、Header对 象
-
通过数据流处理对象,支持分块读取
-
-
简单实现
-
-
-
node
-
标准库: HTTP/HTTPS
-
特点
-
默认模块,无需安装其他依赖
-
功能有限/不是十分友好
-
-
简单实现
-
-
常用的请求库: axios
-
特点
-
支持浏览器、nodejs环境
-
丰富的拦截器
-
-
简单实现
-
-
-
用户体验
-
网络优化
-
方案
-
-
稳定性
-
方案
-
注意
-
重试是保证稳定的有效手段,但要防止加剧恶劣情况
-
缓存合理使用,作为最后一道防线
-
-
-
-
-
了解更多
-
WebSocket
-
特点
-
浏览器与服务器进行全双工通讯的网络技术
-
典型场景:实时性要求高,例如聊天室
-
URL使用Ws://或wss://等开头
-
-
对比
-
-
QUIC
-
QUIC: Quick UDP Internet Connection
-
特点
-
0-RTT建联(首次建联除外)。
-
类似TCP的可靠传输。
-
类似TLS的加密传输,支持完美前向安全。
-
用户空间的拥塞控制,最新的BBR算 法。
-
支持h2的基于流的多路复用,但没有TCP的
-
HOL问题。
-
前向纠错FEC。
-
类似MPTCP的Connection migration。
-
-
对比
-
-