HTTP实用指南| 青训营笔记

41 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

HTTP实用指南:

一:初识

1.      HTTP:(Hyper Text Transfer Protocol)超文本传输协议。

2.      应用层协议,基于TPC协议。

二:协议分析

1.      状态码:一般用三个数字来表示。

2.      缓存:强缓存和协商缓存。

3.      HTTP/2:更快、更稳定、更简单

4.      帧:HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。

5.      消息:与逻辑请求或响应消息对应的完整的一系列帧。

6.      数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。

7.      HTTP/2连接都是永久的,而且仅需要每个来源一个连接。

8.      流控制:阻止发送方向接收方发送大量数据的机制。

9.      对称加密:加密和解密都是使用同一个密钥

10.   非对称加密:加密和解密需要使用两个不同的密钥:公钥和私钥

三:常见场景

1.      抓到的状态码为200不一定发起了请求,是本地缓存响应的(强制缓存)

2.      静态资源的部署方案:缓存+CDN+文件名hash

CDN:Content Delivery Network 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

3.      登录:表单登录:有options的请求,是跨域(cross-origin)请求,请求之前需要预请求(获知服务端是否允许该跨源请求),是一个复杂请求。

4.      跨域解决方案:

a)       使用代理服务器(同源策略是浏览器的安全策略,不是HTTP的)

b)       Iframe(诸多不便)

5.      向地址做的动作:使用POST方法,目的域名http://sso.toutiao.com,目标path/quick_login/v2/

6.      携带信息:Post body,数据格式为form,希望获取的数据格式为json,已有的cookie。

7.      返回信息:数据格式json,各种cookie的信息。

8.      记住登录态:Session+cookie、JWT(JSON web token)

9.      SSO(Single Sign On):单点登录。

四:实际应用

1.      Ajax之XHR(XMLHttpREquest)

a)       UNSENT:代理被创建,但尚未调用open()方法。

b)       OPEED:open()方法已经被调用。

c)        HEADERS_RECEIVED;send()方法已经被调用,并且头部和状态已经可以获得。

d)       LOASING:下载中;responseText属性已经包含部分数据。

e)       DONE:下载操作已完成

2.      Ajax之Fetch:

a)       XMLHttpREquest的升级版

b)       使用Prommise

c)        模块化设计,Response、Request、Header对象

d)       通过数据流处理对象,支持分块读取。

3.      用户体验:网络优化、稳定性、

五:了解更多

1.      通信方式:web Socket

2.      Quic:是基于udp封装的新版本协议。