一、HTTP报文详细解释Web服务器和浏览器或客户端之间主要是通过HTTP协议进行数据交互,HTTP报文主要分为两部分:HTTP请求报文和HTTP响应报文,HTTP请求报文用于客户端向服务器请求数据的一种请求协议,而HTTP响应报文则是用户服务器响应客户端返回响应的数据,可以下载Wildpackets Omnipeek进行网络抓包分析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表示查询数据。
文章图片
另外,我们平时常用的方法是GET和POST,那么GET方法和POST方法有什么区别呢?其实不需要过多讨论,我们只需要从报文入手就行了,GET方法提交数据时,数据封装在请求行的URI中,所以数据会被暴露,而POST方法提交数据,数据被封装在请求正文中,具体的验证你可以下载上面推荐的网络抓包工具分析。
三、HTTP响应状态码HTTP响应状态码一共可分为5类:
100-199:消息状态码,服务器临时响应,表示已收到请求,需要继续处理。
200-299:表示响应成功。
300-399:请求需要重定向。
400-499:发送的请求有问题。
500-599:服务器内部出现错误。
推荐阅读
- curl和浏览器客户端开发调试 – 深入浅出HTTP原理
- HTTP三次握手四次分手,URI、URL和URN的通俗解析和区别 – 深入浅出HTTP原理
- Go中的switch语句用法指南
- 栈用法(后缀表达式的求值)
- HTML页面布局代码示例
- Python程序在列表中查找最大的数字
- 如何使用PHP在网络浏览器中打开PDF文件()
- bell数(对集合进行分区的方式数量)
- Python中的双端队列详解