1、http请求报文和相应报文结构

1.1 HTTP请求报文:请求报文由请求行、请求头、空白行、请求体四个部分组成。

在这里插入图片描述

  • 请求行
    请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1

  • 请求头
    报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现。

  • 空白行
    它的作用是通过一个空行,告诉服务器请求头部到此为止。

  • 请求体
    若方法字段是GET,则此项为空,没有数据,若方法字段是POST,则通常来说此处放置的就是要提交的数据,比如要使用POST方法提交一个表单,其中有user字段中数据为“admin”, password字段为123456,那么这里的请求数据就是 user=admin&password=123456,使用&来连接各个字段。

1.2 HTTP响应报文:响应报文由响应行、响应头、空白行、响应体四个部分组成。

在这里插入图片描述

  • 响应行
    响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK

  • 响应头
    响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。设置HTTP响应头往往和状态码结合起来。例如,有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头,而401(Unauthorized)状态代码则必须伴随一个WWW-Authenticate头。然而,即使在没有设置特殊含义的状态代码时,指定应答头也是很有用的。应答头可以用来完成:设置Cookie,指定修改日期,指示浏览器按照指定的间隔刷新页面,声明文档的长度以便利用持久HTTP连接,……等等许多其他任务。

  • 空白行
    它的作用是通过一个空行,告诉服务器响应头部到此为止。

  • 响应体
    响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

2、状态码与代表含义
HTTP状态码是Web服务器用来告诉客户端,当前的网页请求发生什么事情了,或者是当前web服务器端的响应状态,HTTP状态码是服务器端返回给客户端的。下面是常用的状态码与含义对应表,后续有其他状态码,会补全。  
状态码 含义
200 状态码200表示服务器响应成功,服务器找到了客户端请求的内容,并将内容发送给了客户端。
202 202为服务器已经接受请求,但尚未处理。
204 204为服务器成功处理了请求,但不需要返回任何实体内容。
301 301代表的是永久性的重定向。
302 状态码302表示临时跳转。url地址a可以向url地址b上跳转,但这并不意味着是永久性的,有可能过短时间就从url地址a跳转到地址c。
304 304状态码,被请求的资源内容没有发生更改。
400 400为包含语法错误,无法被服务器解析。
403 403为服务器已经接收请求,但是被拒绝执行。
404 状态码404表示服务器上没有该资源,或者说是服务器上没有找到客户端请求的资源,是最常见的请求错误码。
500 500为服务器内部错误,表示程序错误,就是说请求的网页程序本身就报错了。
502 502为作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效响应。
504 504为作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。