Page 76 - HTTP权威指南
P. 76
起始行 HTTP/1.0 200 OK
Content-type: text/plain
首部
Content-length: 19
客户端 主体 Hi! I’m a message! 服务器
图 3-3 HTTP 报文的三个部分
起始行和首部就是由行分隔的 ASCII 文本。每行都以一个由两个字符组成的行终止
序列作为结束,其中包括一个回车符(ASCII 码 13)和一个换行符(ASCII 码 10)。
这个行终止序列可以写做 CRLF。需要指出的是,尽管 HTTP 规范中说明应该用
CRLF 来表示行终止,但稳健的应用程序也应该接受单个换行符作为行的终止。有
些老的,或不完整的 HTTP 应用程序并不总是既发送回车符,又发送换行符。
实体的主体或报文的主体(或者就称为主体)是一个可选的数据块。与起始行和首
部不同的是,主体中可以包含文本或二进制数据,也可以为空。
在图 3-3 的例子中,首部给出了一些与主体有关的信息。Content-Type 行说明了
主体是什么——在这个例子中,就是纯文本文档。Content-Length 行说明了主体
44 有多大,在这里就只有 19 个字节。
3.2.1 报文的语法
所 有 的 HTTP 报 文 都 可 以 分 为 两 类: 请 求 报 文(request message) 和 响 应 报 文
(response message)。请求报文会向 Web 服务器请求一个动作。响应报文会将请求
的结果返回给客户端。请求和响应报文的基本报文结构相同。图 3-4 显示了获取一
张 GIF 图片所需的请求和响应报文。
HTTP请求报文中
包含命令和URL
GET /specials/saw-blade.gif HTTP/1.0
Host: www.joes-hardware.com
因特网
HTTP/1.0 200 OK
客户端 www.joes-hardware.com
Content-Type: image/gif
Content-Length: 8572
HTTP响应报文中
包含了事务的结果
图 3-4 包含请求和响应报文的 HTTP 事务
48 | 第 3 章