什么是Http协议?
Http协议是“超文本传输协议”(不仅可以传输文本,也可以传输图片,音频,视频等),属于应用层协议,并且它是一种无状态协议,这就表示,服务器不会保存任何关于客户端状态信息,也就是说服务器处理的每个请求都是独立的。其次它默认使用的是80端口进行通信,而且,HTTP协议定义了客户端和服务器之间请求和响应的格式,支持多种请求方法,和响应状态码。
HTTP报文格式
HTTP的工作原理:
是一种“一问一答”结构模型的协议。客户端(通常是Web浏览器)向服务器发送一个HTTP请求,请求包含请求的方法、URL、协议版本、请求头部和请求数据。服务器接收到请求后,会以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
如何查看 HTTP 请求和响应的格式
可以通过 Fiddler 工具 对发出的请求和响应进行抓包,查看请求和响应的协议格式,这种抓包工具也是程序员分析调试程序的重要手段,下面先讲解一下如何使用 Fiddler 工具:
Fiddler 工具下载链接:Fiddler Classic | Original Web Capturing Tool for Windows (telerik.com)
下面介绍 Fiddler 工具的界面:
1️⃣、打开 Fiddler 工具,可以看到以下页面
❗**注意:**打开 Fiddler 后,还需要手动开启 HTTPS 功能,并且安装证书,这样才能够抓到HTTPS的协议包,否则只能抓HTTP的。开启步骤如下图:
勾选上之后,会出来一个弹框,是一个全英文的,意思是问你是否确定安装证书,选择确定完成了,这里因为我的已经安装了,所以不会出来这个弹框。
2️⃣、抓包案例
以打开爱奇艺网站为例,查看fiddler抓到的请求
可以看到在下图的 fiddler上,有很多域名为 /iqiyi 的包,这些都是访问爱奇艺网站时发起的请求,一个网页在打开时,不只是和服务器进行一次交互操作,而是多次交互,这些大部分请求都不用管,主要是看蓝色字体的请求,这里的不同颜色的请求都是代表了不同的含义:
蓝色的:得到的响应是 html(网页)
黑色的:获取到一些普通的数据,具体数据是啥,不知道,要看人家程序员是咋写的
灰色的:直接忽略
绿色的:
3️⃣、点击这个蓝色请求,查看请求的原始数据
可以看出,HTTP协议是一个文本式的协议,协议里的内容都是字符串,和TCP、UDP、IP这些二进制格式的协议完全不同
4️⃣、查看响应
查看响应的步骤和查看请求的步骤一样,可以看到里面还包含了一些乱码,HTTP 响应也是文本的,直接查看,往往能看到二进制的数据(乱码的数据),通过 Raw 标签查看文本格式,通过 View in Notepad 标签在记事本打开。
通过解压缩就可以将 body(正文) 中的乱码翻译成文本