什么是 HTTP
报文
HTTP
报文是简单的格式化数据块,通俗的说,它是用于数据传输的文本字符串。
每条报文都包含一条来自客户端的请求或者一条来自服务器的响应,它们都由三个部分组成:
- 对报文进行描述的起始行
- 包含属性的首部
- 包含数据的主体
HTTP
报文可以分为两类:请求报文和响应报文。 请求报文会向服务器请求一个动作,响应报文会将请求的结果返回给客户端。无论是请求报文还是响应报文,它们都由上面提到的三个部分组成,不同的是起始行。
请求报文:
方法 请求 URL
协议版本号
首部
主体
响应报文:
协议版本号 响应状态码 原因短语
首部
主体
起始行
所有的 HTTP
报文都以起始行开始,请求报文的起始行说明了要做些什么,响应报文的起始行说明发生了什么。
请求行
请求报文的起始行又称为请求行,包含了一个方法、请求URL以及协议版本号。 这个方法描述了服务器应该执行的操作,请求URL
就是定位了一个资源,协议的版本号就是告知服务器,客户端使用的是哪种协议。
方法,可以理解为一个动作,要求服务器如果处理,常用的方法如下:
GET
,从服务器上获取一个资源,这种方法不包含主体。POST
,向服务器发送需要处理的数据(常见的是发送表单数据),这种方法包含主体。PUT
,将请求的主体部分储存在服务器上,这种方法包含主体。DELETE
,从服务器上删除一个资源,这种方法不包含主体。
响应行
响应报文的起始行也称为响应行,包含了协议版本号,状态码,以及处理结果的原因短语。
状态码是一个由三位数组成的数字,用于告知客户端发生了什么,结果怎样。状态码大致可以分为五类:
- 100 - 199 表示信息提示
- 200 - 299 表示成功
- 300 - 399 表示重定向
- 400 - 499 表示客户端错误
- 500 - 599 表示服务器错误
原因短语是响应行最后一个组件,它为状态码提供了文本形式的解释,也就是说,状态码和原因短语是成对出现的,每个状态码对应着不同的原因短语,比如状态码200就对应着 OK
。
首部
首部和方法配合工作,共同决定了客户端和服务器能做什么。 首部大致可以分为以下五类:
- 通用首部,请求报文和响应报文都可以使用的首部。
- 请求首部,请求报文特有的首部,他们为服务器提供了一些额外的信息。
- 响应首部,响应报文特有的首部。
- 实体首部,用于应对实体主体部分的首部。
- 扩展首部,非标准首部,可以由开发者创建。
通用首部
通用首部,就是请求报文和响应报文都可以使用的首部,常见的通用首部如下:
Connection
—— 允许客户端和服务器指定与请求/响应连接有关的选项Date
—— 说明报文是什么时候创建的MIME-Version
—— 说明发送端使用的 MIME
版本Transfer-Encoding
—— 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式Via
—— 显示了报文经过的中间节点(代理、网关)
请求首部
请求首部,就是只有请求报文能够使用的首部字段。 常见的请求首部如下:
Host
—— 给出了接收请求的服务器的主机名和端口号User-Agent
—— 发起请求的应用程序名称Accept
—— 告知服务器能够发送哪些媒体类型Accept-Language
—— 告知服务器能够发送哪些语言Accept-Encoding
—— 告知服务器能够发送哪些编码方式Authorization
—— 客户端提供给服务器的验证数据Cookie
—— 客户端使用该字段向服务器发送一个令牌Cache-Control
—— 用于随报文传送缓存指示
响应首部
响应首部,只有响应报文能够使用的首部。 常见的响应首部如下:
Set-Cookie
—— 在客户端设置一个令牌,以便对客户端进行标识
实体首部
实体首部,请求和响应报文中都有可能包含实体部分,所以这两种类型的报文都有可能出现这些首部。 常见的实体首部如下:
Content-Encoding
—— 对主体执行的任意编码方式Content-Type
—— 这个主体的对象类型
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)