Http 基础 之 报文

报文流web

http 报文是在 Http 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。术语"流入"、“流出”、“上游”及“下游”都是用来描述报文方向的。服务器

http 报文会像河水同样流动,无论是请求报文仍是响应报文,全部报文都会向下游流动。全部报文的发送者都在接收者的上游。post

报文的组成部分url

Http 报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。有三部分组成:对报文进行描述的起始行(start line)包含属性的首部(header)块 以及 可选的 包含数据的 主体(body)部分。spa

起始行代理

起始行和首部就是由行分隔的 ASCII 文本,每行都以一个由两个字符组成的行终止序列做为结束。实体的主体或者报文的主体 是 一个可选的数据块,能够包含文本或者二进制,能够为 空。code

全部的 HTTP 报文都以一个起始行做为开始,请求报文的起始行说明了要作些什么,响应报文的起始行说明发生了什么。orm

请求报文的起始行又称之为请求行,包含了一个方法和一个请求的 url,这个方法描述了服务器应该执行的操做,请求url 描述了 要对 哪一个资源执行 这个方法。请求行中还包含了 http 的版本,用来告知服务器,客户端使用的是哪一种 http。资源

响应报文承载了状态信息和操做产生的全部结果数据,将其返回给客户端。响应报文的起始行,又称之为响应行,包含了响应报文使用的 http 版本、数字状态码,以及描述操做状态的文本形式的缘由短语。文档

全部的 http 报文均可以分为 两类:请求报文(request message) 和 响应报文(response message)。请求报文会向 web 服务器请求一个动做,响应报文会将请求的结果返回客户端。

请求报文格式:

<method> <request-url> <version> <headers> <entity-body>

响应报文格式:(注意,只有起始行的语法会有所不一样)

<version> <status> <reason-phrase><headers> <entity-body>

方法(method)

客户端但愿服务器对资源执行的动做。eg: get、head 或者 post。

GET  :  从服务器获取一份文档;
HEAD :   只从服务器获取文档的首部;
POST  :   向服务器发送须要处理的数据;
PUT  :   将请求的主体部分存储在服务器上;
TRACE :  对可能通过代理服务器传送到服务器上去的报文进行追踪;
OPTIONS :  决定能够在服务器上执行哪些方法;
DELETE  :   从服务器上删除一份文档;

请求url(request-url)

命名了所请求资源或者url 路径组件的完整 url。

版本(version)

报文所使用的 http 版本,格式 如: HTTP/<major>.<minor>,major 主版本号,minor 次版本号,都为整数。

状态码(status-code)

状态码是在每条响应报文的起始行中返回的,会返回一个数字状态,通常是三位数,这三位数字描述了请求过程当中所发生的状况。每一个状态码的第一位数字都用于描述状态的通常类别(“成功”、“出错”等)。

缘由短语(reason-phrase)

缘由短语和状态码是成对出现的,是响应起始行中的最后一个组件,为状态码提供了文本形式的解释,即以短语文本描述 数字状态码。

首部(header)

能够有 0个 或者 多个首部,每一个首部 都包含一个名字,后面跟着一个冒号(:),而后跟着一个空格,接着跟着一个值 和换行。

实体的主体部分(entity-body)

实体的主体是 http 报文的负荷,就是 http 要传输的内容。实体的主体部分包含一个由任意数据组成的数据块。并非全部的报文都包含实体的主体部分。

相关文章
相关标签/搜索