[转]IE7下Fiddler无法进行本地调试的解决方案
上面这段介绍出自如何直接调试线上页面的JavaScript和CSS,作者玉伯是淘宝网UED部的一名前端工程师,虽然Draco并不是纯粹的前端工程师,但是经常阅读玉伯的文章也受益匪浅。其实Fiddle这个词并不只是胡乱修改的意思,它还可以翻译为小提琴,在其官网也能看到醒目的小提琴图标,是优雅的胡搞瞎搞(大富翁里乌咪的口头禅)呢。
反正不是自己的东西就可以乱搞,真的,公司的机器就像小白鼠一样被摧残着——很多不敢在自己计算机上使用的东西都先拿它试验没问题了才将其转正。昨天在上面装了下一直没试过的IE8,结果不到五分钟就卸了,因为最近在研究的Javascript作图组件draw2d无法在IE8下正常运行,尽管知道原因就是Window.prototype.createHTMLElement=function(){/*code*/}中有这样一句item.style.zIndex=Window.ZOrderBaseIndex;,注释掉貌似就没问题了,不过也懒得去改了,还不知道改了会出现什么莫名其妙的问题呢。用回IE6?No,这可是前端工作者心中永远的痛啊,升到7吧。有人可能会发问了,为什么不用FF、Chrome、Safari、Opera呢,其实这些我都在“小白鼠”上安装了,只是项目里有用到VML,非IE家族就省省吧~~
终于到正题了,用上IE7后就发现Fiddler无法进行本地调试,难道真的要用回IE6?!不能妥协,去网上进行一番大扫荡后,总结了有如下解决方案:
- 官方如是说道:
IE7 and the .NET Framework are hardcoded not to send requests for Localhost through any proxies, and as a proxy, Fiddler will not receive such traffic.
The workaround is to use your machine name as the hostname instead of Localhost or 127.0.0.1. So, for instance, rather than hitting http://localhost:8081/mytestpage.aspx, instead visit http://machinename:8081/mytestpage.aspx.
...Or, if you're using Fiddler v2.1.8 or later, just use http://ipv4.fiddler to hit localhost on the IPv4 adapter, or use http://ipv6.fiddler to hit localhost on the IPv6 adapter. This works especially well with the Visual Studio test webserver (codename: Cassini) because the test server only listens on the IPv4 loopback adapter.
Lastly, you could Customize your Rules file like so:
static function OnBeforeRequest(oSession:Fiddler.Session){
(oSession.HostnameIs("MYAPP")) { oSession.host = "127.0.0.1:8081"; }
if
}...and then just hit http://myapp, which will act as an alias for 127.0.0.1:8081.
如图点击红框圈中的选项后便会出现需要修改的js脚本了,或者可以直接查找并修改“我的文档\Fiddler2\Scripts\CustomRules.js”文件。
- 如果嫌上面那样改代码麻烦的话,最简单的就是直接在URL中的localhost或者127.0.0.1后面加上一个句点符号“.”。
- 还有就是修改“%system32%\drivers\etc\hosts”文件了,把127.0.0.1后的localhost改成其它字符串,例如改为local,原来的访问地址http://localhost:8081/mytestpage.aspx就可以简单地写为http://local:8081/mytestpage.aspx,然后就可以调试了。
另外网上还有人说在Fiddler Options的Connections标签中的IE should bypass Fiddler for URLs that start with框中填上localhost就可以解决,在实际使用时发现并不好用。