打开一个网页请求和响应里写了什么

为什么需要

浏览器打开菜谱页,百家菜 App 取回一道菜的评论,用的都是请求和响应。两台机器能互相听懂,是因为它们遵守同一套约定好的说话格式:,它规定请求和响应各写些什么。网址开头的 https:// 就是说:用 HTTP,而且加密。

两者的区别在内容:浏览器要的是给人看的网页,收到后排成页面;App 要的常常是给程序读的数据,例如一份评论清单,再由 App 按自己的样子显示出来。

怎样做

一个请求主要写着四样东西:

  • (HTTP method):要做什么。常见的两种是取东西(GET)和交东西(POST)。
  • 要的是哪一样:网址里域名后面的那一段,叫路径,例如 /recipes/1024。
  • 几条附加说明:例如要找的是 potluck.example 这个网站、读者能看懂哪种语言。
  • 正文:交东西时才有,例如一条评论的文字。

响应也写着几样东西:一个三位数的(status code)和一句简短说明,例如 200 OK,表示成功;几条附加说明,例如正文是网页还是数据、可以保存多久;以及正文本身,例如菜谱页或评论清单。

服务器对外公开的那份请求清单,写明可以向它要哪些东西、要怎样问,叫(API)。这里的接口不是手机上插充电线的接口。在下图里从百家菜的请求清单里选一项发出去,看请求和响应各写了什么。

请求清单:选一项发出去,看服务器怎样回答

先看这里从清单里选一项,看下面的请求和响应各写了什么、开头的三位数字是多少;再把「服务器此刻」改成「出了故障」,同样的请求会得到什么。

百家菜的请求清单(接口)
服务器此刻
发起方
处理

请求

先从清单里选一项。

响应

先从清单里选一项。

三位数字的第一位
  • 2 开头:成功
  • 3 开头:还要客户端再做一步,例如换个地址去取(301),或者接着用手里那一份(304)
  • 4 开头:请求有问题,按现在的样子办不到
  • 5 开头:请求看起来没问题,服务器那一侧没能完成

状态码按第一位数字分成五类,其中 1 开头表示「收到了,还在继续处理」。遇到不认识的三位数字,看第一位就能知道大概:例如 503 以 5 开头,问题在服务器一侧,它暂时忙不过来或者正在维护;第 11 章要讲的 429 以 4 开头,表示这个请求者在一段时间里请求得太多了。

代价是什么

约定好格式,任何浏览器都能和任何网站说话;代价是每个请求都要带上这些附加说明。而且 HTTP 本身不记得你上一个请求说过什么,网站要记住「你已经登录」,得另想办法(第 4 章)。

请求清单一旦公开,就会有别的程序照着它来取、来交,改动清单时要顾及正在使用它的程序。状态码也只是粗略的分类,具体原因要看正文。看到 5 开头的错误,也不一定是网站自己的服务器坏了。有的公司站在许多网站前面,替它们接收和转交请求,Cloudflare 就是一家(第 6 章细讲这样的角色)。2025 年 11 月 18 日,访问这些网站的人收到的是它发回的 5 开头的错误页,错误出在 Cloudflare 自己的网络里。

资料来源

以下资料均于 2026-10-20 访问。

  1. Overview of HTTPMDN Web Docs(Mozilla),2026-10-08
  2. RFC 9110: HTTP SemanticsIETF(R. Fielding、M. Nottingham、J. Reschke),2022-06
  3. RFC 6585: Additional HTTP Status CodesIETF(M. Nottingham、R. Fielding),2012-04
  4. HTTP response status codesMDN Web Docs(Mozilla),2026-09-17
  5. What is a URL?MDN Web Docs(Mozilla),2026-01-08
  6. APIMDN Web Docs(Mozilla),2025-07-11
  7. What is an API?AWS,未注明日期
  8. Cloudflare outage on November 18, 2025Matthew Prince,Cloudflare,2025-11-18