http网络协议及fiddler使用
请求:
- 请求行(请求方法 URL 协议/版本号)
- 请求头(以键值对的形式展示:客户端的属性信息)
- Content-Type:请求体的数据类型
- text/html:HTML格式
- text/plain:纯文本格式
- image/jpeg:jpg图片格式
- application/json:JSON数据格式
- application/x-www-form-urlencoded:表单默认的提交数据格式
- multipart/form-data:在表单中进行文件上传时使用
- Content-Type:请求体的数据类型
- 请求体(格式:name=value,多个参数用&隔开,GET和DELETE请求类型没有请求体)
URL组合
http和https的区分
相同点:都是协议,都可以用来传输数据
不同点:http不加密,不安全;https加密(公网使用);http常用端口号是80,https常用端口号是443
HTTP请求
常见的请求方法:GET (查询,没有请求体)、POST(添加)、DELETE(删除,没有请求体)、PUT(修改)
相同点:都可以向服务器发送请求,都可以带参数
不同点:GET请求参数放在URL里(在浏览器地址栏中可以直接看到);
URL本身有长度限制,参数数量不能过多;
没有请求体
POST请求参数放在请求体里(抓包才能看到),相对安全;
请求体本身没有参数长度限制
HTTP响应
- 响应行(协议/版本号 响应状态码 响应状态描述)
- 响应状态码:
- 1XX:指示信息
- 2XX:成功
- 3XX:重定向(变更地址)
- 4XX:客户端错误
- 5XX:服务器错误
- 响应状态码:
- 响应头(以键值对的形式展示:服务器端的属性信息)
- 响应体(服务器返回的结果:图片/html文件/JSON数据/txt等)
关于抓包
客户端向服务器端发送请求以及服务器响应客户端的请求,都是以数据包来传递的。抓包就是通过工具拦截客户端与服务器交互的数据包。
fiddler
fiddler常见的三种应用场景:
1、定位前后端bug
2、弱网测试
3、绕过界面限制直接测试服务器
实例:客户下单支付成功了,但是订单页面没有显示订单,怎么定位问题?
1、查看数据库的订单表,看看有没有刚刚下单的订单记录:
没有就是下单环节入库问题;有就是查询订单环节问题
2、用fiddler抓取对应问题环节的数据包:
如果抓不到请求,就是前端问题;
如果有请求但是没响应,就是后端问题;
如果有请求也有响应,需要查看响应信息,如果返回报错,则需要具体分析报错内容。
fiddler设置过滤
fiddler设置弱网进行测试
1、设置网络延时时间
2、开启网络延时
fiddler设置断点
before request:在服务器端收到客户端发送的请求之前拦截(可修改请求内容)
after response:在客户端收到服务器端返回的响应之前拦截(可修改返回内容)
F12抓包
弱网环境下可能会出现的异常:
1、上传文件时进度卡住不动
2、登录不上或者登录后立即掉线
3、响应过程中页面控件可点击,导致崩溃
4、搜索不响应,多次点击后结果显示总在刷新被替换
可通过设置断点来验证网站有没有加入防篡改策略(无法通过抓包来修改请求和响应)