# 前后端分离的利器:fiddler的实用功能举例

##what's fiddler
fiddler是一款代理软件,对于前后端分离开发非常重要。可以说,如果前端开发没有用上fiddler或类似软件,那还不能算是真正的前端开发。fiddler有三大实用功能:做代理,造响应(反向代理),造请求。 下载安装请自行用搜索引擎查找。安装完之后要把相应的软件代理设置为fiddler,默认的代理为http://127.0.0.1:8888/。可以在fiddler Options中修改端口。 ![fiddler Options](https://images0.cnblogs.com/blog/84053/201409/132352189349400.jpg)。 ##原理
`代理`功能是fiddler所有功能的来源。 ![fiddler代理图解](https://images0.cnblogs.com/blog/84053/201409/132339020434823.jpg) 如图所示,fiddler在客户端跟服务端之前架设了一层代理,所有的请求经过fiddler转发,所有的响应也是。于是,fiddler在得到这些数据之后,就能提供一系列的功能:**捕获并监控本机所有的http请求,显示或修改其内容**。(左下角有捕获开关)并且提供针对JSON,XML,图片,二进制等的详细查看,或者其中的认证、cookies等等,以及其中的时间分析,对于http熟悉的人都知道请求的组成部分,不啰嗦了。对于响应也会有相应的功能。简而言之,通过http传送的数据,都会被记录并分析,甚至改造。 ##做代理
时下移动设备流行的时代,要调试其上面的http请求不容易,狭小的屏幕一般提供给用户去使用,很少留下开发的位置,此时可以利用fiddler对其进行监控。要想让移动设备走fiddler代理(也就是图2所示的通道,而不是直接访问服务端),需要在fiddler中开启相应的选项,如图 ![fiddler远程连接开关](https://images0.cnblogs.com/blog/84053/201409/132352189349400.jpg) 记下端口,勾上**Allow remote computers to connect**,再在移动设备的wifi里面,找到其高级设置(一般是按住具体的wifi连接),设置代理,填好ip和端口即可。此时在移动设备上的所有请求及其响应会显示在fiddler的主窗口里面。 ##造响应
fiddler在得到服务端的响应后,如果只是乖乖地按原样响应回来,那就太单调了,其非常实用的功能是对响应进行加工处理,改成你想要的模样。通常在开发中我们需要的是把响应改成本地文件(在后台接口未完成之前) ![造响应的一般方式](https://images0.cnblogs.com/blog/84053/201409/140018287935834.jpg) 如图,在被监控的http请求/响应中拖放一条到`AutoResponder`页面,则可对其“动手动脚”,可以利用正则表达式匹配多个请求,把`EXACT`改成`regex`即可。具体的操作可以自己摸索一下。 这一点功能的意义非常重大 * 前端的开发能与后台接口开发并行,只需要在本地造一些实验数据,把请求的响应指向该数据文件,即可进行大多数的代码开发。
* 有时候线上的应用有bug,我们不可能对其频繁进行修改提交,则可以利用此功能进行本地调试(把线上代码指向本地),OK了才上线。 ##反向代理
同样在`AutoResponder`的页面,还能进行反向代理的功能。通俗地理解为对请求进行转发。应用情景如下:我有开发环境http://A/wsdl/,另外有测试环境http://B/wsdl/,这两个环境明显区别是数据不一样,有时候开发好的代码,想换一个环境测试一下能不能跑正确?怎么处理?费很大的劲部署到B上吗?,其实不需要,只需要加一条规则 |if request matches...|then repond with...|
|--|--|
|regex:http://A/wsdl/|http://B/wsdl/|
要注意url最后的`/`不能略去,这属于http基础。那么指向A的请求自动变成B的请求,并且不会引起跨域。这对于前端调试接口(**url固定,参数不一定**)非常有用,开发、测试、生产环境可以随时切换,本人实践起来非常好用。 ##造请求
调试接口有时候还需要直接发送数据,此时我们可以造请求。跟造响应类似,切换到`Composer`页面,把一个请求拖放过来,即可对其内容进行任意修改,修改完之后再`Execute`发送回去即可。可以立马造出自己想要的数据格式对接口发出请求。 ##其他功能
* 对于参数格式,我们还可以用其自带的`TextWizard`进行格式转化,base64,url编码(%形式),html编码(&#开头),js unicode(\u开头)等等,可以自行探索一下。
* 可以自行用脚本的方式定制fiddler的规则,首先要安装SyntaxView插件。参考:http://kb.cnblogs.com/page/130367/#script
* 打断点调试等高级功能目前还没涉及到。 ##
归根到底,fiddler作为代理,能对http数据进行显示分析,也能进行修改,并配套相关的辅助功能。

前后端分离的利器:fiddler的实用功能举例的更多相关文章

  1. [转] 前后端分离开发模式的 mock 平台预研

    引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都 ...

  2. 超简单工具puer——“低碳”的前后端分离开发

    本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...

  3. List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac

    List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List& ...

  4. .NET Core前后端分离快速开发框架(Core.3.0+AntdVue)

    .NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员登录 ...

  5. [转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue)

    [转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员 ...

  6. NET Core3前后端分离开发框架

    NET Core前后端分离快速开发框架 https://www.cnblogs.com/coldairarrow/p/11870993.html 引言 时间真快,转眼今年又要过去了.回想今年,依次开源 ...

  7. 【Docker】1、 前后端分离项目 下载启动运行

    人人开源前后端分离项目下载与配置 文章目录 人人开源前后端分离项目下载与配置 前后端分离框架介绍 后端项目下载与配置 1.renren-fast后台项目介绍 2.开发环境搭建 3.下载后端renren ...

  8. 前后端分离中,Gulp实现头尾等公共页面的复用

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果前后端分离时,制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面 ...

  9. nodeJS(express4.x)+vue(vue-cli)构建前后端分离详细教程(带跨域)

    好想再回到大学宿舍,当时床虽小,房随小,但是心确是满的 ----致  西安工程大学a-114舍友们 转载请注明出处:水车:http://www.cnblogs.com/xuange306/p/6185 ...

随机推荐

  1. [Java]Socket和ServerSocket学习笔记

    对于即时类应用或者即时类的游戏,HTTP协议很多时候无法满足于我们的需求.这会,Socket对于我们来说就非常实用了.下面是本次学习的笔记.主要分异常类型.交互原理.Socket.ServerSock ...

  2. matlab练习程序(地图上画经纬度)

    需要看下生成的数据在地球上的经纬度具体位置. 投影为墨卡托投影.   clear all; close all; clc; load coast; a=load('out.txt'); %自己的经纬度 ...

  3. ORACLE中Scalar subquery Caching的hash table大小测试浅析

      前阵子总结了这篇"ORACLE当中自定义函数性优化浅析"博客,里面介绍了标量子查询缓存(scalar subquery caching),如果使用标量子查询缓存,ORACLE会 ...

  4. [20180914]oracle 12c 表 full_hash_value如何计算.txt

    [20180914]oracle 12c 表 full_hash_value如何计算.txt --//昨天在12c下看表full_hash_value与11g的full_hash_value不同,不过 ...

  5. MYSQL主从同步/主主同步

    一.MYSQL主从同步 注意:进行主从同步操作时需要确保DB无写操作 flush tables with read lock:   //全局读锁定,执行了命令之后所有库所有表都被锁定只读. 1.在主机 ...

  6. 利用uWSGI和nginx进行服务器部署

    搭建服务器虚拟环境 1)在本机进入虚拟环境,执行命令导出当前需要的所有包. pip freeze > plist.txt 2)通过ftp软件将项目代码和plist.txt文件上传到服务器. 3) ...

  7. vscode中配置php的xdebug

    vscode中配置php的xdebug vscode配置php的xdebug,步骤如下: 1. 安装phpdebug插件: PHP Debug 2.网上下载php的xdebug扩展(注意根据自己的ph ...

  8. 排序算法之选择排序的思想以及Java实现

    1 基本思想 选择排序的思想是,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 2,算法的实现(Java) package Algorit ...

  9. June 12. 2018 Week 24th. Tuesday

    Just be yourself because you are unique and you will shine. 每个人都是独一无二的,做好你自己,你也能够光芒四射. From What a G ...

  10. 如何设计一个"好的"测试用例?

    什么才算是“好的”测试用例? 好的测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关. "好的"测试用例必须具备哪些特征? 一个“好的”测试用例 ...