1 解决的问题
1) 场景1:生产环境报错
对前台开发来说,业务逻辑都在js中,所以报错90%以上都是js问题。
如果生产环境出现报错,但是测试环境正常。这时修改了代码没有环境验证效果,直接升级到生产环境风险又太高——(1)万一升级后依然不好使导致客户不耐烦呢?(2)万一牵连出别的问题呢?
此时需要一种方法,可以在生产环境的网址上调试本地的js文件。
2) 场景2:本地工程不给力
某个任务修改了js文件,进行单元测试时发现本地工程太慢,或者本地工程更新了代码后项目无法启动。此时需要一种方法,可以在测试环境的网址上直接调试本地的js文件。
1.3 技术原理
1) 本地电脑的浏览器访问页面时,会从服务器端下载文件到本地浏览器中执行
2) 我们可以利用fiddler软件,截获从服务器上下载的文件,把之替换成本地的指定文件,这样在浏览器中生效的就是本地的文件了。
截取前:response是服务器发来的文件,代码版本是服务器上的。
截取后:fiddler把服务器上的文件替换为本地我指定的文件,提供给浏览器使用。
2 操作步骤
1) 打开fiddler软件
2) 打开软件的监听。(菜单方式,或f12快捷键)打开监听后,软件左下角会有展示
3) 打开网页,左侧会展示监听到的各种文件,js文件一般为绿色。
——如下截图操作的是common.js文件。
- 把左边的common.js文件,拖拽到右边的“AutoResopnder”tab页内。
- 勾选标记的2个东西。
- 拖拽过去后,下面就会多出一行条目,就是框住的那一条。
- 在页面右下角有2行路径,上面的就是咱们拖拽的文件的服务器路径,不动即可。下面的那行路径应选择为本地替换文件的路径。
- 选择的方法是:点击向下箭头,选择最下面的“find a file …”会打开本地的浏览窗口,选择本地的文件。
- 点击一下save按钮。
- 这样,common.js文件浏览器就不会使用服务器上的版本了,而是使用本地的代码文件。
- 提醒:本地再次修改后,需要清理浏览器缓存并刷新页面,以使新文件生效。
3 注意事项
3.1 端口设置
可以设置和修改端口,如图。应该是任何不和别的软件冲突的可用端口都可以。
3.2 清理ie缓存
修改文件后,需要清理ie缓存后刷新页面,此时浏览器中生效的是改后版本。
3.3 工具是代理,有时影响上网
此工具相当于一个代理软件,若开着监控,有时会使得浏览器打不开外网。
3.4 不要忘记打开监听
不要忘记打开监听。(菜单方式,或f12快捷键)
3.5 清屏操作
用工具栏的如下按钮
3.6 关于安装
官网:http://www.telerik.com/fiddler
- 使用fiddler需要电脑中已安装“.net framework”,.net相当于微软参考java的jdk做的东西,封装了一些类库和基础功能,windows操作系统会自带某个版本的.net。
- fiddler有2个版本的安装包,分别对应.net 2和.net 4,功能上无区别,我使用的是对应.net 2的版本。
4 其他说明
4.1 可截取其他类型文件:html,图片,css等
css样式的修改,图片的替换等,也可以方便地用此技术方案进行测试。
4.2 要关注代码分离
Css样式和js业务逻辑,尽量不要和页面耦合在一起,写成独立文件,不仅方便代码版本维护,而且便于未来的修改和调试。
其实java文件也同理,一个java文件代码太多的话,未来拆包的风险和工作量就会很多。
5 “互联网产品”的安全性
“互联网应用”的业务校验不能依赖前端。
1) 大家可能都笼统地听过一个概念:前端的校验是不可信的,核心的校验一定要放到服务器端来做。但可能对这种说法体会都不深。
2) 本次的讲解就是一个鲜活的例子:黑客可以通过截取网站js文件,把里面的前端校验都去掉,如果网站的服务器端没有做严格的二次校验,那么就很可能受到黑客的攻击。
3) 特别提示:校验放到服务器端,指的是包括发起校验的动作也得在服务器端。可能有的同事写过这样的代码,js文件中调一个java的bo或action函数进行校验,这种校验在形式上是在服务器端进行的,可是发起校验的动作却是在前台,黑客完全可以篡改代码让这个校验动作都不发起。