HTTP跟学笔记
HTTP
正经人谁学HTTP啊
初识
什么是HTTP?
协议分析
变化
分析
以HTTP/1.1为例:
1.Method
常见
特点
Safe安全:不会修改服务器的数据的方法
GET HEAD OPTIONS
Indempotene幂等:同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有的safe的方法都是幂等的
GET HEAD OPTIONS PUT DELETE
2.状态码
常见
RESTful API
Representational State Transfer(REST)ful API
一种API设计风格
特点
- 每个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
举例
3.请求头
常用请求头
4.缓存
强缓存/协商缓存
优先级/流程
5.cookie
Set-Cookie -response
HTTP/2
概述
更快更稳更简单
一些名词
- 帧:HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
- 二进制 极大提高效率
- 压缩算法 极大提高效率
- 消息:与逻辑请求或响应消息对应的完整的一系列帧。
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
- 交错发送,接收方重组织
一些特性
- HTTP/2连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制
- 服务器推送:服务器主动推送一些信息(比如一些静态资源,但是要根据实际情况,不要盲目怼进去)
HTTPS
概述
- HTTPS Hypertext Transfer Protocol Secure
- 经过TSL/SSL加密
加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密,加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)
- 为了达到更高安全性——两者混用↓
常见场景
静态资源
好玩吧
登录
OPTIONS引出
- 跨域问题-cross-origin
- 需要same-origin
https: //www.example.com :443
scheme host name port
如何解决跨域问题?
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
代理服务器
同源策略是浏览器的安全策略,不是HTTP的
Iframe
- 诸多不便
携带信息
- 向什么地址做了什么动作?(栗子)
- 使用POST方法
- 目标域名https:/sso.toutiao.com
- 目标path/quick_login,/v2/
- 携带了哪些信息,返回了哪些信息?
- 携带信息
Post body,数据格式为form 希望获取的数据格式为json 已有的cookie
- 返回信息
数据格式json 种cookie的信息
- 携带信息
鉴权
SSO单点登录
单点登录(Single Sign-On,缩写为 SSO)是一种用户认证方式,使用一个凭证(如用户名和密码)即可登录多个相关系统。这样,用户只需要登录一次就可以在多个系统中访问所需的资源,而不需要在每个系统上进行独立登录。
单点登录通常用于组织内部的系统,如企业内部的人力资源系统、财务系统等。它的好处在于简化了用户登录过程,提高了用户体验,并且提高了安全性。
实际应用
XHR
Fetch
Node
HTTP/HTTPS
- 默认模块,无需安装其他依赖
- 功能有限/不是十分友好
axios
- 支持浏览器、nodejs环境
- 丰富的拦截器
网络优化
快
稳
- 重试是保证稳定的有效手段,但是要防止加剧恶劣情况
- 缓存合理使用,作为最后的一道防线
了解更多
通信方式
WEbSocket
- 浏览器与服务器进行全双工通讯的网络技术
- 典型场景:实时性要求高,例如聊天室
- URL使用ws://或wSs:/等开头
传输层UDP
QUIC(目前不适合大规模应用)
- QUIC:Quick UDP Internet Connection
- O-RTT建联(首次建联除外)。
- 类似TCP的可靠传输。
- 类似TLS的加密传输,支持完美前向安全。
- 用户空间的拥塞控制,最新的BBR算法。
- 支持h2的基于流的多路复用,但没有TCP的HOL问题。
- 前向纠错FEC。
- 类似MPTCP的Connection migration。