一个离开.NET的程序员

ryhan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

HTTP报文

一、      报文流

HTTP报文是在HTTP应用程序之间发送的数据块,这些数据块以文本形式在客户端、服务器和代理之间流动。报文会像河水一样向下游流动,所有报文的发送者都在接受者的上游。

二、      报文的组成部分

报文是简单的格式化数据块,或包含客户端的请求或服务器的响应。

1.      三个组成部分:起始行、首部、主体

HTTP/1.0 200 OK                        起始行             [对报文进行描述]

Content-type: text/plain          首部                  [报文的属性]

Content-length                           首部                  [报文的属性]

                                                        [空行]               [在主体与起始行、首部之间空一行]

This is a msg!                              主体                  [可选的报文数据主体]

 

起始行和首部是以行分割的ASCII文本,每行都以两个字符作为结束(即:回车符+换行符)

报文的主体部分是一个可选的数据块,可以包含文本、二进制数据也可以为空

 

如图:

 

 

2.      报文的语法格式:

请求报文:

<请求方法>  <请求的URL>  <HTTP版本>

<请求首部>

 

<请求的主体部分 >

 

响应报文:

<HTTP版本>  <状态码>  <原因短语 >

<响应首部>

 

<响应的主体部分>

 

简要描述

 

         请求方法:     客户端需要服务器执行的操作,如:GET、HEAD、POST

         请求URL:     请求资源的URL路径,完整的URL

         HTTP版本:   报文所使用的HTTP版本,格式为: HTTP/主版本号.次要版本号,如HTTP/1.1

         原因短语:     状态码的可读版本,如 HTTP/1.0 200 OK,其中“OK”就是原因短语

         首部部分:     一个报文可以有零个或多个首部,每个首部都包含一个名字,后面跟个冒号,然后是一个可选的空格在接着一个值,最后是一个回车换行。如:Server: BWS/1.0

         主体部分:     任意数据组成的数据块,可选。偶尔报文只是以一个回车换行[CRLF]结束

三、      报文的起始行

所有的HTTP报文都以一个起始行开始,请求报文的起始行说明要做些什么,响应报文的起始行说明发生了什么

 

  • 请求报文请求服务器对资源进行一些操作,其起始行称为请求行,其包含一个方法、一个URL和一个HTTP版本。

比如:GET /123.txt HTTP/1.1 代表请求方法为GET,请求URL为/123.txt ,版本协议为 HTTP/1.1

 

  • 响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。其起始行成文响应行,包含了响应报文使用的HTTP版本、数字状态码和一个文本形式的原因短语。

比如:HTTP/1.1 200 OK 代表响应报文使用HTTP/1.1协议,状态码为200表示成功,原因短语为OK(表示之前的请求是成功的)

1.      方法

方法

描述

包含报文主体

GET

从服务器获取一份文档

HEAD

只从服务器获取文档的首部

POST

向服务器发送需要处理的数据

PUT

将请求的主体部分存储在服务器上

TRACE

对经过的代理服务器传送到服务器上去的报文进行追踪

OPTIONS

获取在服务器上可以执行哪些方法

DELETE

从服务器上删除一份文档

 

PS:并不是所有的服务器都实现上表中的7种方法,个别WEB服务器可能还会实现自己的请求方法,称为扩展方法。

2.      状态码

整体范围

已定义的范围

分类

100 ~ 199

100 ~ 101

信息提示

200 ~ 299

200 ~ 206

成功

300 ~ 399

300 ~ 305

重定向

400 ~ 499

400 ~ 415

客户端错误

500 ~ 599

500 ~ 505

服务器错误

 

四、      报文的首部

HTTP首部字段向请求和响应报文中添加一些附加信息。本质上是 名/值 对的列表。分为通用首部、请求首部、响应首部、实体首部、扩展首部。

 

常见的首部实例:

 

首部实例

描述

Date: Wed, 27 Mar 2013 14:36:55 GMT

服务器产生响应的日期

Content-Length: 48

实体的主体部分包含数据的长度

Content-Type: image/jpeg

实体的主体部分是一个 JPEG图片

Accept: image/gif, image/jpeg, text/html

客户端可接收GIF、JPEG图片及HTML

五、      报文的主体

HTTP报文的第三部分是可选额实体部分,实体的主体是HTTP报文的负荷,也就是HTTP要传输的内容。可以承载的类型数据:图片、视频、HTML稳定、软件应用程序电子邮件等…

posted on 2013-03-27 23:29  ryhan  阅读(727)  评论(0编辑  收藏  举报