初识 HTTP协议 | 青训营笔记

24 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

什么是 HTTP 协议?

本节课介绍了什么是 HTTP,以及其基本特点

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

基本特点

  • 应用层协议,基于 TCP 协议
  • 请求响应
  • 简单可拓展
  • 无状态

HTTP 协议分析

并对 HTTP 协议进行分析,简述了 HTTP 报文结构、发展历程

HTTP 协议的演变

HTTP/1.0 到 HTTP/1.1

主要实现了对 TCP 连接的复用

HTTP/1.0:每一对 HTTP 请求和响应都需要打开一个单独的 TCP 连接

HTTP/1.1:引入了持久连接的概念,通过设置 Connection 头部为 keep-alive 的方式

HTTP/1.1 到 HTTP/2

主要实现了多个请求的复用

HTTP/2:

  • 通过将 HTTP 消息拆分为独立的帧,进行交错发送
  • 对 HTTP 头部进行了二进制编码
  • 还实现了 Header 压缩、服务端主动推动、流优先级等能力

HTTP/2 到 HTTP/3

主要实现了基于 UDP 协议、更快的传输

使用了基于 UDP 的 QUIC 协议,实现了又快又可靠的传输

UDP:没有错误检查内容,更快的实现通信

QUIC 负责合并纠错、重建丢失的数据

总的来说,HTTP 协议主要围绕着传输效率和速度上的优化

状态码

代表当前请求的状态

  • 1XX - 提示信息
  • 2XX - 请求成功
  • 3XX - 重定向
  • 4XX - 客户端错误
  • 5XX - 服务端错误

应用场景

然后介绍了常用的应用场景

静态资源请求

分析报文信息

image-20230202104034157.png

缓存策略:

  • 强缓存
  • Cache-control:一年

资源类型:CSS

登录场景

登录状态的记录

Session + cookie Or JWT

适合使用jwt的场景:

  • 有效期短
  • 只希望被使用一次

比如,用户注册后发一封邮件让其激活账户,通常邮件中需要有一个链接,这个链接需要具备以下的特性:能够标识用户,该链接具有时效性(通常只允许几小时之内激活),不能被篡改以激活其他可能的账户,一次性的。这种场景就适合使用jwt。

而由于jwt具有一次性的特性。单点登录和会话管理非常不适合用jwt,如果在服务端部署额外的逻辑存储jwt的状态,那还不如使用session。基于session有很多成熟的框架可以开箱即用,但是用jwt还要自己实现逻辑。

实际应用

在浏览器与 node 中的实际使用

在实际应用中,标准库 HTTP/HTTPS 功能不是十分友好。我们常用请求库 axios,它不仅支持浏览器环境,而且也支持 node 环境,本身还带有丰富的拦截器,使用体验相当不错。

个人总结

通过本节课,我初步了解了什么是 HTTP 协议,以及 HTTP 协议的一些应用场景