在FiddlerScript中工作,我在OnBeforeResponse方法上做了一些更改,这些方法曾经在不同的机器上工作(现在已经很久了),但现在不适合我。我把它归结为以下基本示例。
在fiddler沙盒页面上,我正在尝试将每个项目替换为每个项目网址:http://webdbg.com/sandbox/shop/
Fiddler脚本文件从原来修改为有两个新行。 1根据我见过的所有例子以及曾经为我工作的内容解码会话,1代替响应。
static function OnBeforeResponse(oSession: Session) {
oSession.utilDecodeResponse(); //Added this.
oSession.utilReplaceInResponse("per item", "per item"); //Added this
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
}
保存上面的fiddlerscript文件并刷新页面后,我没有在浏览器中看到替换显示。如果我查看Fiddler检查员,我我看到替换。这意味着OnBeforeResponse确实在某个时刻被调用,utilReplaceInResponse
也在执行。
更奇怪的是,如果我在所有响应之后放置断点(Fiddler - >规则 - >自动断点 - >响应后)并刷新页面,响应会按预期点击断点,然后单击运行到完成,浏览器确实显示替换。所以:没有断点,页面不会在呈现的页面中显示替换。使用断点并简单地运行完成,页面确实显示替换。
为什么页面显示浏览器中的更改,即使它在Fiddler检查器中显示,或者我设置了断点?
解决方案如果在主工具栏中选择了 Stream 选项 - 取消选择该选项并按预期工作。
环境:Fiddler v2.4.5.3 - 64位AMD64,VM:114.00mb,WS:132.00mb .NET 2.0.50727.5472 WinNT 6.1.7601 SP1
见过IE9和Chrome31
答案 0 :(得分:6)
解决了自己。
我在工具栏中启用了Stream选项。 (Doh!)取消选择,OnBeforeResponse中的替换按预期工作。
答案 1 :(得分:1)
它可能是一个新的Fiddler版本功能,但我必须添加以下行以使我的find / replace工作:
oSession.utilDecodeResponse();