第 3 课:响应的信封:状态码及其含义
本课目标:
- 读懂 HTTP 响应的状态行。
- 把状态码归入正确的类别。
- 说明响应体是否存在。
服务器用一个三位数作答
服务器的回答同样是一个信封。信封的第一行是状态行,它总是以一个三位数的状态码开头。这个数字是服务器在说「我明白你的请求了」,或者「我找不到那个东西」,或者「我在处理时出故障了」12。
讲解
状态行
典型的响应这样开头:
状态码类别
状态码的第一位数字告诉你它的类别:
- 1xx:信息性(初学者很少见到)
- 2xx:成功,例如
200 OK3 - 3xx:重定向,例如
301 Moved Permanently - 4xx:客户端错误,例如
404 Not Found4 - 5xx:服务器错误,例如
500 Internal Server Error5
状态码不是随意的报错文字,而是标准化的类别。
响应体
在响应头之后,响应可能带有一个响应体:浏览器索取的 HTML、图片、JSON 或其他数据本身。有些响应没有响应体,比如 204 No Content,因为状态码和响应头已经把答案说完了1。
完整示例(跟着做)
下面是一次 GET 请求得到的成功响应:
- 状态码:
200(成功) Content-Type: text/html告诉浏览器响应体是 HTML。Content-Length: 1276告诉浏览器要接收多少字节。- 响应体就是那个 HTML 页面。
再看一个 404 响应:
服务器在正常工作;它只是没有浏览器要的那个页面。
你来试试(填空示例)
把每个状态码和它的类别对上:
小结 + 下一步
响应以状态码开头。第一位数字告诉你类别:2xx 成功,3xx 重定向,4xx 客户端错误,5xx 服务器错误。状态行和响应头之后,响应可能带着响应体。下一课,你将看到在浏览器里的什么位置能读到这一切。
Footnotes
-
MDN: HTTP messages — https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Messages ↩ ↩2 ↩3
-
MDN: HTTP response status codes — https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status ↩ ↩2
-
MDN: 200 OK — https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200 ↩
-
MDN: 404 Not Found — https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/404 ↩
-
MDN: 500 Internal Server Error — https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/500 ↩