通常我们使用网址访问某个页面,就是通过HTTP协议来完成的。当我们在输入框输入网站,并按下回车后,客户端就会向服务器发起HTTP请求,服务器收到该HTTP请求后,就会作出HTTP响应。
下面我输入一个网址,按下回车,向目标服务器发起HTTP请求:
百度的服务器就会对这个HTTP请求,返回一个响应,我就能访问到百度页面了:
如何能够看到HTTP请求和响应的格式呢?这就得用到抓包工具Fiddler了
打开Fiddler软件,看到以下界面,列表页就可以看到 当前所发出的HTTP请求,双击一个请求,详情页就会显示这个请求的详情。
一打开fiddler,就能抓到许多包,因此,要查看我们向百度发起的HTTP请求,就需要先把当前抓到的请求给删除,点击请求,Ctrl + A 全选,删除。接着,就输入百度网址,回车,发起请求。
在列表中找到请求,双击,就可以看到该请求的详情。
HTTP的格式就分为 HTTP请求 和 HTTP响应。在详情页就可以看到HTTP请求和HTTP响应。
下面就分别看一下HTTP请求和响应的格式,要想看到HTTP请求和响应的格式,就要点击Raw。
1.HTTP请求
HTTP请求格式:
(1)首行:包括 GET、URL、HTTP/1.1
GET是 HTTP请求的 方法类型,常用的请求的方法类型一般有 GET、POST、PUT、DELETE。
URL是唯一资源定位符,描述了一个资源在网络上的位置。
HTTP/1.1描述了当前协议的版本号。
(2)请求头(Header):请求的相关属性 会在Header中描述出来。Header的数据格式是键值对的形式,形如"key: value"。
(3)空行:Header的结束标志是空行,Header的最后一项下方会有一行是空的,称之为"空行"。
(4)正文(Body):有些请求没有body,比如,此时的请求就没有body部分,因此上图中body部分为空。
2. HTTP响应
HTTP响应格式:
(1)首行:HTTP响应的首行与请求的首行不同,响应的首行包括 协议版本号,状态码,状态码描述。
状态码 说明了 当前请求的响应状态是200,状态码描述 说明了 响应的状态是OK的。
常见的状态码有:2xx,3xx,4xx,5xx
2xx:以2开头的状态码,一般都表示 成功。
3xx:以3开头的状态码,一般表示 重定向,说明此响应要跳转到其它页面。
4xx:常见的有403,表示 该页面用户无权限访问(forbidden);404,表示 页面没找到(Not found),可能是用户输入的url有误。
(2)响应头(Header):与请求头类似,也是"键值对"结构,描述了 响应的相关属性。
(3)空行:响应头的结束标志。
(4)正文(body): 这里响应的正文不为空,说明body中响应的有数据。