🔌 第六章 请求到达Web服务器,响应返回浏览器
📄 一句话概括

服务器把状态行+消息头+空行+消息体组装成响应交回协议栈——结构与 1.1.5 的请求消息对仗,同一封信的正反面。

📝 本节和前面几节的关系

内容备好了、资格审过了;本篇看回信怎么写。

一、三段式

状态行:版本+状态码(如 HTTP/1.1 200 OK); 消息头:Content-Type、Content-Length 等; 空行之后是消息体——文件内容或程序输出。

二、与请求对仗

1.1.5 的请求=请求行+消息头+空行+消息体; 响应完全同构——学过一半等于学过全部。

三、动手 Demo:拼一条响应消息

服务器组装响应的三段式:

for s in ['状态行   HTTP/1.1 200 OK',
    消息头   Content-Type: text/html',
             Content-Length: 1280',
    空行',
    消息体   <html>...页面内容...</html>']:
    print(s)

实跑输出:

--------------------------------------------------------------------
拼一条响应消息
--------------------------------------------------------------------
  服务器组装响应的三段式:

    状态行   HTTP/1.1 200 OK
    消息头   Content-Type: text/html
             Content-Length: 1280
    空行
    消息体   <html>...页面内容...</html>

  与 1.1.5 的请求消息结构对仗——同一封信的正反面。

响应写好后走什么路回去?还是 6.2 那套协议栈—— 去时的路反过来走一遍,本章开头衔接上。

30 秒实验

  1. 用 curl -v 看一次完整响应的结构。
  2. 数数常见响应头里哪些是必须的。
  3. 对照 1.1.5 画出请求与响应的对照图。

常见误区

  1. 以为响应没有头——结构与请求同构。
  2. 以为状态码只有 404——2/3/4/5 开头各有家族。
自测三问(点开对答案) 1. 响应消息三段式? —— 状态行、消息头、消息体(中间空行)。 2. Content-Length 说什么? —— 消息体有多少字节。 3. 与请求消息的关系? —— 同构,正反面。

相关笔记