第 1 课:按下回车之后:一次请求与一次响应
本课目标:
- 说出一次 HTTP 交换中的两个主要角色。
- 解释 URL 的作用。
- 在一次简单的交换中识别请求和响应。
先修条件:无 | 下一篇 2 >>
网页看起来瞬间出现,背后其实是一段简短的对话
你在浏览器里输入 https://example.com,按下回车,页面就出现了。但在任何东西显示出来之前,两个素不相识的程序必须先约定一种共同语言。一个是你电脑上的浏览器;另一个是互联网上某处的服务器。它们说的语言就是 HTTP。
HTTP 是一种客户端-服务器协议(协议就是一套事先约定好的对话规则):浏览器(客户端)先发出请求,服务器再用响应作答12。浏览器使用的地址是 URL。URL 就是地址:它告诉浏览器要联系哪台服务器,以及要向它索取哪个页面或文件。
下面是整件事最简化的版本:
这张图的重点不在技术细节,而在箭头的方向:浏览器先开口,服务器再回复。
讲解
浏览器是客户端
浏览器是负责发问的程序。你按下回车后,它读取 URL,找到服务器,发出一个 HTTP 请求1。在服务器把页面发回来之前,它无法读到页面。
服务器是应答方
服务器负责监听请求。收到请求后,它决定要发回什么。那个回答就是 HTTP 响应。服务器可能是一台计算机,也可能是很多台,但在浏览器看来,它就是「服务器」1。
URL 是地址
像 https://example.com/index.html 这样的 URL 有两项职责:说明要联系哪台服务器(example.com),以及要索取哪个资源(/index.html)。浏览器会把这个 URL 变成一个服务器能理解的请求。
请求和响应是一对
每一次 HTTP 交换都是一个请求跟着一个响应。如果响应丢失了,浏览器通常会再问一次。没有请求在先,就不会有响应23。
完整示例(跟着做)
假设你输入 https://example.com 并按下回车。
- 浏览器读取 URL,并做出判断:「我需要向 example.com 的服务器索取资源
/。」 - 浏览器发出一个 HTTP 请求,开头是:
- example.com 的服务器收到请求,发回一个响应:
- 浏览器读取响应体,把页面显示出来。
你来试试(填空示例)
把这次交换中的空补上:
- 你把一个 URL 输入进浏览器。
- 浏览器向服务器发出一个 HTTP 请求。
- 服务器发回一个 HTTP 响应。
- 浏览器显示出页面。
小结 + 下一步
这一课你认识了每次 HTTP 交换的四个组成部分:浏览器(客户端)、服务器、URL,以及请求/响应对。下一课,你将看进请求内部,了解浏览器究竟在信封上写了什么。
Footnotes
-
MDN: Overview of HTTP — https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Overview ↩ ↩2 ↩3
-
RFC 9110: HTTP Semantics — https://www.rfc-editor.org/rfc/rfc9110.html ↩ ↩2
-
MDN: HTTP messages — https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Messages ↩