| HowItWorksLab · 系统
简体中文

HTTP 请求—响应周期是如何运转的

你打开的每个页面,都从一问一答开始。跟着一次请求走一遍:浏览器发出请求,服务器构建回答,响应变成你屏幕上的页面。

HTTP · 请求—响应周期 客户端发出请求 → 服务器构建回答 → 响应返回 → 浏览器渲染页面 客户端 / 浏览器 发出请求 HTTP 请求 方法 · URL · 请求头 Web 服务器 接收请求 应用处理程序 构建回答 HTTP 响应 状态码 · 响应头 · 正文 渲染页面 浏览器绘制结果 请求经网络传输 服务器处理 响应返回 请求 服务器处理 响应
周期的顺序 发出请求 → 服务器接收 → 构建回答 → 返回响应 → 渲染页面
显示模式

详细说明

什么是请求—响应周期?

HTTP(超文本传输协议)是浏览器与 Web 服务器交换文档所使用的语言。它遵循一个简单的模式:客户端提出想要什么,服务器给出回答。这次交换就叫请求—响应周期。

一个页面往往需要很多次这样的交换。第一个请求取回 HTML,后续请求再把它引用的图片、样式表和脚本一一下载。

为什么要把请求和响应分开?

因为这样两端都能保持简单而独立。客户端只需说明想要什么,服务器只需描述返回了什么。只要双方遵守同一套规则,任意一端都可以被替换、升级或部署在任何地方。

正是这种分离,让同一个浏览器能与千百万台不同的服务器通信,同一台服务器也能回应千百万个不同的浏览器。

部件及其作用

1. 客户端发出请求

一切都从浏览器开始。它组织出一条 HTTP 请求,说明自己想要什么,并发往托管该站点的服务器。

2. 请求穿过网络

请求以数据的形式在网络中传输,带着操作方式(如 GET)、想要的 URL 路径,以及补充上下文的请求头,比如浏览器类型和可接受的格式。

3. Web 服务器接收请求

请求到达后,Web 服务器读取它,判断站点里应由哪一部分来回答,再把它转交到正确的位置。

4. 应用处理程序构建回答

处理程序完成真正的工作:读取文件、查询数据库或运行代码。结果被组装成一条 HTTP 响应。

5. 响应把结果带回

响应包含概括结果的状态码、描述内容的响应头,以及装着实际页面、图片或数据的正文,随后返回给客户端。

6. 浏览器渲染页面

响应到达后,浏览器解析它并把结果绘制到屏幕上。如果页面还引用了其他资源,同样的周期会为每一项重复一次。

用一句话说,HTTP 是什么?

HTTP 是客户端与服务器交换文档所遵循的一套规则:客户端发出请求说明想要什么,服务器返回包含它的响应。

HTTP 请求里都有什么?

请求会写明动作(方法,如 GET)、想要的资源(URL 路径),以及请求头里的额外信息,比如浏览器版本或可接受的内容格式。

HTTP 响应里都有什么?

响应带有表示结果如何的状态码、描述内容的响应头,以及装着实际页面、图片或数据的正文。

200 或 404 这样的状态码是什么意思?

状态码概括处理结果。200 表示成功,404 表示找不到该资源,500 表示服务器在尝试回答时遇到了错误。

HTTP 是一条持续不断的连接吗?

不是。HTTP 是请求—响应:客户端提问、服务器回答,这次交换就结束了。一个页面可能需要很多次这样的交换来取回图片、样式和脚本。

服务器会记住我上一次的请求吗?

HTTP 本身是无状态的——每个请求各自独立。网站会在此基础上用 Cookie、令牌或会话补上状态,让服务器能跨请求认出你。

常见误区

HTTP 是一条常开的连线。 以为连接会一直保持、持续不断地推送。
HTTP 是一问一答。 每个请求对应一次响应;一个页面可能要很多次独立交换。
服务器只是返回一个文件。 以为每个响应都是磁盘上现成的静态页面。
回答常常由处理程序生成。 响应可以由代码、数据库或服务生成,不只是从磁盘读取。
状态码就是页面本身。 把这个数字和随后真正的内容混为一谈。
状态码只概括结果。 真正的页面、图片或数据在响应的正文里传输。
免责声明:本图解为教学目的做了大幅简化,真实系统变量与复杂度远超此处。不可用于工程生产用途,也不构成金融、政治或专业建议。