http基本概念

本文最后更新于3 个月前,文中所描述的信息可能已发生改变。

提示:本文中所有图片来源于网络资源

认识HTTP协议

HTTP 是一种超文本传输协议,也就是HyperText Transfer Protocol。

根据HTTP的名字,我们可以拆解得到三个关键词:

  • 超文本
  • 传输
  • 协议

含义解释

什么是超文本,什么又叫协议,什么又是传输呢?

什么是超文本

在了解超文本之前,都会有一个疑惑:文本富文本超文本三者之间的区别。

文本(Text)、富文本(Rich Text)和超文本(Hypertext)是三种不同类型的文档格式,它们在内容的表达、格式和链接方面有所不同。下面是对这三种格式的简要说明:

  1. 文本(Text)
  • 文本通常指的是纯文本(Plain Text),它不包含任何格式化信息。纯文本文件的内容只包含字符本身,没有字体、颜色、大小等视觉样式的描述。这种格式的文件可以通过任何文本编辑器打开,如记事本(Notepad)、Vim、Emacs等。
  • 纯文本文件的扩展名通常是.txt
  • 纯文本适合于简单的文本编辑和存储,不涉及复杂的格式和样式。
  1. 富文本(Rich Text)
  • 富文本是一种包含格式化信息的文档格式,它允许用户设置文本的字体、颜色、大小、加粗、斜体、下划线等样式。富文本还可以包含图像、表格、列表等元素,使得文档在视觉上更加丰富和吸引人。
  • 富文本文件通常由专门的富文本编辑器创建和编辑,如Microsoft Word(.docx)、Apple Pages(.pages)等。这些文件的扩展名可能是.docx.pages等。
  • 富文本格式的文档在内容展示上更加灵活,适合于需要格式化的文档,如报告、杂志、书籍等。
  1. 超文本(Hypertext)
  • 超文本是一种特殊的文档格式,它不仅包含文本内容,还包含指向其他文档或资源的链接。这些链接可以是内部链接(指向同一文档内的其他部分)或外部链接(指向其他文档或网页)。超文本的这种链接特性使得信息的组织和导航变得更加灵活和动态。
  • 超文本的典型代表是HTML(HyperText Markup Language),它是构建网页和网站的基础。HTML文件的扩展名通常是.html.htm
  • 超文本适合于创建包含多个链接和资源的复杂文档,如网页、在线帮助文档、电子书籍等。

综上所述,文本是最基本的文档格式,只包含字符;富文本在文本的基础上增加了格式化功能,使得文档更加美观;而超文本则在富文本的基础上增加了链接功能,使得文档可以包含指向其他资源的链接,便于信息的组织和导航。 而且文本是向下兼容的,文本可以被富文本编辑器无缝渲染,富文本也可以被超文本通过某些框架来渲染,比如说markdown可以被快速渲染为HTML。

传输的定义

传输的本质是来回运输,是一个双向通信的过程,所以HTTP 协议是一个双向协议。

在一个浏览器与服务器的交互过程中,浏览器是请求方A,网站就是应答方B。双方约定用 HTTP 协议来通信,于是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以看到图片、视频了。

请求应答

数据虽然是在 A 和 B 之间传输,但允许中间有中转或接力。

而在 HTTP 里,需要中间人遵从 HTTP 协议,只要不打扰基本的数据传输,就可以添加任意额外的东西。

针对传输,我们可以进一步理解了 HTTP。

HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

协议的简要定义

协议,本质上就是两个字,协和议。

协,是指代两个(方)及以上的参与者在一定的框架下达成共识,这个共识是被所有参与者公认的标准。比如说波茨坦公告宣布了德国作为二战战败国,那么到现在,所有参与签字同盟国和轴心国的共识都是,德国是二战战败国。

议,是参与者协定的一种行为约束或者规范。比如说GPL v3开源协议典型的约束了下游软件的分发和发行,这本质上也是一种约束和规范。

本质

HTTP的本质是支持双工通信的可靠应用层协议。与之相同的应用层协议还有SSHSMTPSOAP等协议。

常见状态码

1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。比如说https通信期间需要切换加密算法,请求重新生成秘钥,就需要使用1XX系列的状态码。

200是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。

301 Moved Permanently表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。

302 Found表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。

301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

304 Not Modified不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制(主要是协商缓存)。

Activiti 7获取用户审核任务节点
JDK21坑点(lombok编译不通过)