HTTP报文、HTTP方法和HTTP响应状态码详细解释 – 深入浅出HTTP原理

一、HTTP报文详细解释

Web服务器和浏览器或客户端之间主要是通过HTTP协议进行数据交互,HTTP报文主要分为两部分:HTTP请求报文和HTTP响应报文,HTTP请求报文用于客户端向服务器请求数据的一种请求协议,而HTTP响应报文则是用户服务器响应客户端返回响应的数据,可以下载Wildpackets Omnipeek进行网络抓包分析HTTP报文,获取和学习更多有用的内容。

HTTP协议报文结构

1、HTTP请求报文

一个HTTP请求报文包含3部分:

(1)请求行:方法,URI,协议/版本

(2)请求头信息

(3)请求正文数据

具体请求报文实例如下:

HTTP - Hyper Text Transfer Protocol
  HTTP Command:         POST  [54-57]
  URI:                  /cloudquery.php  [58-72]
  HTTP Version:         HTTP/1.1<CR><LF>  [74-81]
User-Agent:             Post_Multipart<CR><LF>  [85-109]
Host:                   192.168.1.6<CR><LF>  [113-132]
Accept:                 */*<CR><LF>  [136-145]
Pragma:                 no-cache<CR><LF>  [149-163]
X-360-Cloud-Security-Desc:Scan Suspicious File<CR><LF>  [167-212]
x-360-ver:              4<CR><LF>  [216-226]
Content-Length:         770<CR><LF>  [230-247]
Content-Type:           multipart/form-data; boundary=----------------------------bff2824ed28b<CR><LF><CR><LF>  [251-333]

在该实例中,请求行的请求方法为POST,URI定义一个资源,一般为相对于服务器根目录的路径,HTTP版本为1.1。

请求头主要是包含客户端环境的相关信息和正文内容的信息,例如Host为本机地址,Content-Length为数据长度,在更规范的请求头中会有更多的说明信息。

请求正文数据为一个文件,若使用POST提交注册信息,这里会保存用户帐号密码等信息。

2、HTTP响应报文

一个HTTP响应报文同样包含3部分:

(1)响应行:协议/版本,状态码,状态描述

(2)响应头信息

(3)响应正文数据

具体响应报文实例如下:

HTTP - Hyper Text Transfer Protocol
  HTTP Version:         HTTP/1.1  [54-61]
  HTTP Status:          200  [62-64]
  HTTP Reason:          OK<CR><LF>  [66-67]
Server:                 nginx<CR><LF>  [71-82]
Date:                   Sun, 07 Apr 2019 22:22:19 GMT<CR><LF>  [86-119]
Content-Type:           application/octet-stream<CR><LF>  [123-159]
Transfer-Encoding:      chunked<CR><LF>  [163-187]
Connection:             close<CR><LF>  [191-206]
Cache-Control:          no-cache<CR><LF>  [210-231]
pragma:                 no-cache<CR><LF><CR><LF>  [235-249]
  Line  1:              e9<CR><LF><LF><EOT><NUL><GS><NUL><SOH><NUL><NUL><DC1><STX>  [255-256]
  Binary Data:

在本例中,响应行的协议为HTTP协议1.1版本,状态码为200,表示成功响应。

响应头包含服务器环境和数据实体的的相关信息,如server为nginx,Cache-Control为no-cache。

响应正文数据Binary Data为二进制数据。

二、HTTP方法

HTTP方法的本质是用于定义对资源的操作,REST API设计规范准确使用了HTTP方法的语义化,这也是在后端开发中,设计API的基本规范。URL的本质是资源,HTTP的方法是对资源的操作,如/user,我们不需要再设计/user/add+delete+update+search,我们只需要设计/user一条URL,另外使用四个基本的HTTP方法代替资源操作:POST表示对资源的新增操作,DELETE表示删除资源,PUT表示更新资源,GET表示查询数据。

HTTP方法使用举例

另外,我们平时常用的方法是GET和POST,那么GET方法和POST方法有什么区别呢?其实不需要过多讨论,我们只需要从报文入手就行了,GET方法提交数据时,数据封装在请求行的URI中,所以数据会被暴露,而POST方法提交数据,数据被封装在请求正文中,具体的验证你可以下载上面推荐的网络抓包工具分析。

三、HTTP响应状态码

HTTP响应状态码一共可分为5类:

100-199:消息状态码,服务器临时响应,表示已收到请求,需要继续处理。

200-299:表示响应成功。

300-399:请求需要重定向。

400-499:发送的请求有问题。

500-599:服务器内部出现错误。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?