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

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

HTTP报文、HTTP方法和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] Line1: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报文、HTTP方法和HTTP响应状态码详细解释 – 深入浅出HTTP原理】HTTP方法的本质是用于定义对资源的操作,REST API设计规范准确使用了HTTP方法的语义化,这也是在后端开发中,设计API的基本规范。URL的本质是资源,HTTP的方法是对资源的操作,如/user,我们不需要再设计/user/add+delete+update+search,我们只需要设计/user一条URL,另外使用四个基本的HTTP方法代替资源操作:POST表示对资源的新增操作,DELETE表示删除资源,PUT表示更新资源,GET表示查询数据。
HTTP报文、HTTP方法和HTTP响应状态码详细解释 &#8211; 深入浅出HTTP原理

文章图片
另外,我们平时常用的方法是GET和POST,那么GET方法和POST方法有什么区别呢?其实不需要过多讨论,我们只需要从报文入手就行了,GET方法提交数据时,数据封装在请求行的URI中,所以数据会被暴露,而POST方法提交数据,数据被封装在请求正文中,具体的验证你可以下载上面推荐的网络抓包工具分析。
三、HTTP响应状态码HTTP响应状态码一共可分为5类:
100-199:消息状态码,服务器临时响应,表示已收到请求,需要继续处理。
200-299:表示响应成功。
300-399:请求需要重定向。
400-499:发送的请求有问题。
500-599:服务器内部出现错误。

    推荐阅读