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 章
   71   72   73   74   75   76   77   78   79   80   81