Fiddler 调试出现的 ReadResponse() failed 问题

        好久没写博客了,想重新开始、继续积累。

        最近在使用 Fiddler 分析一个应用,出现了如下错误:

[Fiddler] ReadResponse() failed: The server did not return a complete response for this request.

        对这块不是特别熟,一时半会没有头绪。按照该错误说明来讲,应该是服务器没有发送数据。这原因可就多了去了,一般是服务器认为不应该进行响应操作。在网上找了些资料,有说权限设置不正确,但在我这不应存在此情况,我只有在挂上 Fiddler 的时候才出现应用无法和服务器通讯的情况,那么就此断定是 Fiddler 的问题。

        找了一会 Fiddler 的设置,仍然无法解决,突然看见应用发的包:

POST  HTTP/1.1
Content-Length: 38
Content-Type: application/x-www-form-urlencoded
Host: (主机名)
Connection: Keep-Alive
User-Agent: android-async-http/1.4.4 (http://loopj.com/android-async-http)
Accept-Encoding: gzip

(数据)

        发现在 Header 的首行没有地址,这个应用写的也真是奇葩…… 不知道是否符合 HTTP 规范。找到 FiddlerScript,摸索着在 OnBeforeRequest 函数中添加如下代码:

        // 防止某些服务器出错
        if (oSession.url == "http://(主机)")
        {
            oSession.url = "http://(主机)/";
        }

        兴高采烈地去测试,依然返回 504 Fiddler 相关的错误,以及 400 BadRequest. 由于不知道 Session::url 的格式,可能问题出在这。

        先注释掉,然后换了一种方法,在 AutoResponder 里添加 Rule, 进行重定向,解决了问题。

 

后记

        在 Fiddler Script 例子文档中,找到了如下用法:

        if (oSession.url=="www.example.com/live.js") {
              oSession.url = "dev.example.com/workinprogress.js";
        }

        原来是不需要加 "http://" 的……

        查询 RFC2616,5.1.2 节,有如下描述:

5.1.2 Request-URI
Request-URI    = "*" | absoluteURI | abs_path | authority

Note that the absolute path cannot be empty; if none is present in the original URI, it MUST be given as "/" (the server root).

        根据这段描述, 该应用发出的请求并不符合规范。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fiddler是一款功能强大的Web代理调试工具,它可以记录和检查所有客户端与服务端的HTTP/HTTPS请求,并提供了多种功能来帮助开发人员和测试人员进行问题定位和分析。以下是关于Fiddler调试工具的介绍和使用方法[^1][^2]: 1. 下载和安装Fiddler:你可以从Fiddler官网(https://www.telerik.com/fiddler)下载最新版本的Fiddler,并按照安装向导进行安装。 2. 启动Fiddler:安装完成后,双击桌面上的Fiddler图标来启动Fiddler。 3. 配置浏览器代理:对于IE浏览器,不需要额外配置就可以使用Fiddler。而对于Firefox浏览器,需要手动设置HTTP代理才能正常使用Fiddler。具体配置方式如下: - 打开Firefox浏览器,点击菜单按钮(三条横线图标)。 - 选择“选项”。 - 在“常规”选项卡下,向下滚动到“网络代理”部分。 - 点击“设置”按钮。 - 在弹出的对话框中,选择“手动代理配置”。 - 在“HTTP代理”和“SSL代理”字段中,输入Fiddler的监听地址和端口(默认为127.0.0.1:8888)。 - 点击“确定”保存设置。 4. 使用Fiddler进行调试:启动Fiddler后,它会自动开始监听HTTP/HTTPS请求。你可以通过以下方式使用Fiddler进行调试: - 查看请求和响应:Fiddler会显示所有的HTTP/HTTPS请求和响应,你可以在“会话列表”中查看详细信息。 - 设置断点:你可以在Fiddler中设置断点,以便在特定的请求或响应上暂停调试。 - 修改请求和响应:Fiddler允许你修改请求和响应的数据,以便进行测试和调试。 - 修改hosts:你可以使用Fiddler修改hosts文件,以便将域名解析到指定的IP地址。 - 限制网速:Fiddler可以模拟不同的网络速度,以便测试网站在不同网络条件下的性能。 - 进行接口测试:你可以使用Fiddler发送自定义的HTTP请求,以便测试接口的功能和性能。 - 辅助自动化测试:Fiddler提供了API和脚本功能,可以与其他工具和脚本集成,实现自动化测试。 以上是关于Fiddler调试工具的介绍和使用方法。如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值