【HTTP协议】HTTP报文以及返回结果的HTTP状态码

一,HTTP报文下的HTTP信息

1.1,HTTP报文

用于HTTP协议交互的信息被称为HTTP报文,客户端的报文叫做请求报文,服务器端的报文叫做响应报文。

HTTP报文是一种很多行(由CR+LF作换行符)数据构成的字符串文本。

HTTP报文大致可分为报文首部和报文主体,之间用空行进行分割,但是,并不一定有报文主体。

1.2 ,请求报文及响应报文的结构

请求报文:

响应报文

  

 请求报文和响应报文由以下数据组成

请求行:包含请求的方法,请求URI和HTTP版本。

状态行:包含表明结果的状态码,原因短语和HTTP版本。

首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般有四种首部:通用首部,请求首部,响应首部和实体首部。

其他

1.3,利用编码提升传输速率

HTTP在传输时进行编码,能有效处理大量访问请求,但是,进行编码的操作也需要计算机完成。

1.3.1,报文主体和实体主体的差异

  • 报文

报文时HTTP通信中的基本单位,由8位字节流组成,通过HTTP协议进行传输

  • 实体

作为请求或者响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。

HTTP报文的主体用于传输请求或响应的实体主体。

通常情况下,报文主体等于实体主体,只有在进行编码的时候实体主体才会发生差异。

1.3.2 压缩传输的内容编码

内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩,内容编码后的实体由客户端接受并负责解码。

1.3.3,分割发送的分块传输编码

在HTTP 通信过程中,请求的资源过大,在没有请求完成之前,浏览器无法显示请求页面,我们就需要进行分块处理,让浏览器逐步显示页面。这种编码形式就是分块传输编码。

分块传输编码会将主体分为很多块,每一块都用16进制去标记块的大小,而实体的最后一块使用0“CR+LF”进行标记。

然会客户端进行解码,恢复到编码之前的实体。

在HTTP/1.1中存在一种称为传输编码的机制,它可以在通信时按照某种编码进行传输,但是只定义作为分块传输编码中。

 1.4,发送多种数据的多部分对象集合

HTTP协议也采纳了多部分对象集合,发送的一份报文包含多类型实体。通常在图片和文本文件等上传时使用。

 

1.5 ,获取部分内容的范围请求

如果你下载一个图片下载到一半的时候,突然断网了,你再进行下载就会从最开始进行下载,为了解决这种机制就需要一种可以恢复的机制,就是从上次断开的地方重新进行下载。

要实现该功能需要指定下载的实体范围,这就是范围请求。

对一份1-10000字节大小的资源,如果使用范围请求可以只请求5001-10000字节的内容。

执行请求时,会用到首部字段Range字段来指定byte范围。

 

 1.6,进行内容协商返回最合适的内容

当浏览器的版本是英文或者中文的时候,访问相同的URI网站的WEB页面时,则会显示对应的英语或中文版本,这种机制就是内容协商。

内容协商就是客户端和服务器端就响应的资源进行交涉,然后提供给客户端最合适的资源。内容协商会以响应资源的语言,字符集,编码方式等作为判断的基准。

包含在报文中的首部字段就是判断的基准。

内容协商技术有以下三种类型:

  • 服务器驱动协商

由服务器端进行内容协商。以请求首部字段作为参考,在服务器端自动处理。但是对用户来说,以浏览器发送的信息作为判定的依据,但是不一定筛选出最优的内容。

  • 客户端驱动协商

由客户端进行内容协商的方式,用户从浏览器的可选项列表中进行手动选择。

  • 透明协商

共同进行决定,由服务器端和客户端各自进行协商的一种写法。

二,HTTP状态码

2.1,状态码告知

状态码的职责就是描述返回的结果,通过结果用户就可以指导是否请求成功。

状态码的类别

 

 2.2 2XX 成功

2.2.1 200 ok

 表示客户端发送的消息被服务器端正常处理了。

在响应报文中,响应信息随着方法的不同会发生改变,使用GET方法会返回对应的请求资源实体,而使用HEAD方法,就不会返回实体。

2.2.2 204 NOT FOUND

 该状态码表示客户端请求处理成功,但是在返回的响应报文中不含实体的主体部分。

这个状态多出现在客户端向服务器发送信息,而服务器端不进行信息返回。

2.2.3 206 Partial Content

 表示客户端进行范围请求,而服务器成功执行这部分的GET请求。响应报文中包含Content-Range指定范围的实体内容。

2.3,3xx重定向

2.3.1 moved Permanently

永久性重定向 。表示请求的资源被分配到新的URI上,以后应使用资源现在所使用的URI,

2.3.2,302 Found

临时性重定向。表示资源分配到了新的URI上,希望用户本次使用新的URI访问。

302和301相比:302代表的资源 不是被永久移动,只是临时性质的,换句话说,已经移动的资源对应的URI将来还有可能改变。

2.3.3,303 SeeOther

该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。

302和303相同,但是303指明必须使用GET获取资源。

 

 2.3.4,not modified

 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但没有满足时返回。

2.3.5 307 Temporary Redirect

临时重定向

4.4,客户端发生错误

4.4.1 400Bad Request

 

表示请求报文中存在语法错误。

4.4.2 401 Unauthorized

 

表示发出的请求需要进行HTTP认证的认证信息,如果之前进行过1次请求,则表示认证失败。

4.4.3 403 Forbidden

 

 表示请求的资源禁止访问。

4.4.4 404 not found

表示服务器上没有访问的资源。或者服务器拒绝请求时进行说明。

2.5 5XX服务器错误

2.5.1,500 Internet server Error

 

表示服务器执行请求时发生了错误。

2.5.2 503 Service Unavailable

 

表示服务器现在处于超负荷或者进行停机维护,现在无法处理请求。

发布了139 篇原创文章 · 获赞 93 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_43271086/article/details/105634482