HTTP 协议的基本格式和 fiddler 的用法
HTTP
超文本传输协议
常见为1.1版本
https引入了一个“加密层”,安全性会更高一些,除此之外内容和http完全相同。
“一问一答模型“的协议。客户端发送一个请求,服务器返回一个响应。
-
一问多答:下载一个大的文件
-
多问一答:上传一个大的文件
-
多问多答:远程桌面(远程控制)
HTTP报文格式。利用抓包工具观察HTTP请求/响应的详细情况。
代理。给客户端跑腿”正向代理“。给服务器跑腿”反向代理“。
HTTP协议抓包
-
wireshark:功能强,可以抓TCP,UDP,IP...抓HTTP(太重)
-
chrome/Edge开发者工具:f12自带抓包,但不能看到HTTP原式报文数据
-
fiddler:经典,功能强大的抓包工具
-
左侧是抓到HTTP数据报的列表,ctrl+a delete 清空
-
点击某一项,能在右侧看到请求(右上角)和响应(右下方)的具体情况。选择raw,得到原始的HTTP请求和响应的模样。viev in notepad可以在记事本中打开。
HTTP请求基本格式
-
GET 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili HTTP/1.1 方法(method)URL 版本号
-
请求头(header)第二行开始的若干行,一直到空行结束 每一行都是键值对,用空格分隔。
-
空行 请求头结束标记
-
正文(body)提交给服务器的数据
HTTP响应基本格式
-
HTTP/1.1 200 OK 版本号 状态码(成功/失败/失败原因) 状态码的描述 200是常见的状态码表示成功,三个部分用空格分隔
-
响应头(header)键值对 空行结束
-
空行
-
正文 通常是HTML/CSS/JS/JSON/图片/音频/字体
URL 唯一资源定位器
-
IP地址(域名)
-
端口号
-
层次的路径
-
查询字符串
URI 唯一资源标识符 URL是URI的一种实现
-
url给哪个协议使用
-
现在已经不用这种认证方式
-
服务器地址可以是IP也可以是域名
-
服务器端口号如果不写会自动拼接上一个端口,http80,https443
-
?查询
-
键值对之间用&分隔 键值之间用=
url encode本质上就是转义字符