这是我参与「第四届青训营 」笔记创作活动的第5天
初识HTTP
什么是HTTP?
超文本传输协议,应用层写于基于TCP协议
发展过程
HTTP2
特点:更快、更稳定、更简单
帧(frame):HTTP2通信的最小单位,每个帧都包含帧头,至少会标识出当前帧的所属数据流
消息:与逻辑请求或响应消息对应的完整的一系列帧
数据流:已建立的连接内的双向字节流。可以承载一条或多条消息
HTTPS
Hypertext Transfer Protocol Secure
经过TSL/SSL加密
加密
-
对称加密:加密和解密都是使用同一个密钥
-
非对称加密:加密和解密需要使用两个不同的密钥(公钥和私钥)
协议报文结构
以HTTP/1.1版本为例
Requests与Responses结构一致
具体字段的取值与含义
状态码
RESTful API
Representational State Transfer
表现层状态转化
开发过程中更为关注使用的请求头
响应头
缓存
-
强缓存,本地有直接使用
-
弱缓存(是不是最新的,能不能用)需要通信协商,于是出现了协商缓存
逻辑
cookie
场景分析及解决方案
静态资源
content-type
静态资源方案:CDN + 缓存 + 文件名hash(把静态资源放在CDN上)
CDN:Content Delivery NetWork
通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
登录
有options请求是跨域问题导致
跨域
三部分组成:scheme + host name + port
协议,域名,端口号有一者不同即为跨域
约定俗成HTTPS端口号默认是使用443,http默认是80
解决方案(跨域请求如何被处理)
-
CORS跨域资源共享
-
代理服务器
同源策略是浏览器的安全策略,不是HTTP的
- Iframe
跳转后自动登录流程
如何发起HTTP协议
浏览器篇
利用XHR:XMLHttpRequest
利用Fetch:XHR升级版,使用Promise,模块化设计,通过数据流处理对象
node篇
标准库:HTTP/HTTPS
常用的请求库:axios
用户体验
快
通