这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
重点内容
- http
- https
- 应用场景分析
- http3
初识HTTP
当我们在地址栏填写一条url地址,发生了什么?
- 浏览器处理输入信息
- 浏览器发起请求
- 服务端接收请求
- 浏览器读取响应
- 浏览器渲染
- 页面加载完成
HTTP协议
HHTP是超文本传输协议,应用层协议基于TCP协议,他是简单可扩展的协议,他是无状态的协议。
目前已经推出了HTTP3。
常见的字段有METHOD。
Method
- GET
- POST
- PUT
- DELETE
- HEAD
- CONNECT
- OPTIONS
不会修改服务的数据的方法是安全的:GET
幂等:同样的请求被执行一次和连续执行多次,得到的结果都是一样的。
状态码
- 1xx:只是信息,表示请求已接收,继续处理
- 2xx:成功,表示请求已被成功接收、理解、接受
- 3xx:重定向,要完成请求必须进行更进一步操作
- 4xx:客户端错误,请求有语法错误或请求无法实现
- 5xx:服务器端错误,服务端未能实现合法的请求
RESTful API
他是一种API设计风格。
- 每一个URL代表一种资源
- 客户端和服务端之间,传递这种资源的某种表现层。
- 客户端通过HTTP method,对服务端资源进行操作,实现"表现层状态转化"
常见请求头
- Aceept:接受类型
- Content-Type:客户端发送出去实体内容的类型
- Cache-Control:指定请求和响应遵循的缓存机制。
- Cookie:有cookie会自动带上
常用响应头
- Set-Cookie:设置和页面关联的Cookie
- Content-Type:服务端
HTTP2
帧:http2最小通信单位,每个帧都包含帧头
消息:与逻辑请求或响应消息对应的完整的一系列帧。
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
交错发送,接收方重组织。
HTTP2连接是永久的,而且仅需要每个来源一个连接。
流控制:阻止发送方向接收方发送大量数据的机制。
服务器有主动推送能力,可以提前推送静态资源。
HTTPS
https = http + ssl
对称加密:加密和解密都是用同一个密钥
非对称加密:加密和解密都需要使用两个不同的密钥:公钥和私钥。
HTTP的应用场景分析
以今日头条浏览器为例。
状态码200 一定发起了请求吗?
显然不一定,浏览器对于静态资源,会从本地缓存获取响应。
所以,在实际开发的过程中,我们往往发现自己修改了CSS却没有生效,这大概率是浏览器缓存的锅。
静态资源方案: 缓存+CDN+文件名hash
CDN通过用户就近性和服务负载的判断,CDN确保内容以一种极为高效的方式为用户提供服务。
跨域
为什么有options请求?
跨域,oringin
当一个域名中:scheme、host name、port不同时即是跨域。
预请求:获取服务器是否允许该跨域请求(复杂请求)
鉴权
- Session+Cookie
- JWT
Websocket
- 浏览器与服务器进行全双工通讯的网络技术
- 实时性高
其他
QUIC:HTTP3的新特性