如何使用Fiddler修改HTTP响应中的状态代码?

w5m*_*w5m 44 http httpresponse http-status-codes fiddler

我需要测试一些我编写的客户端应用程序代码,以测试它对来自Web服务器的HTTP响应中返回的各种状态代码的处理.

我安装了Fiddler 2(Web调试代理),我相信有一种方法可以使用这个应用程序修改响应,但我很难找到方法.这将是最方便的方式,因为它允许我保持客户端和服务器代码不被修改.

任何人都可以协助,因为我想拦截从服务器发送到客户端的HTTP响应并在到达客户端之前修改状态代码?

任何建议将不胜感激.

小智 74

好的,所以我假设您已经能够监控您的客户端/服务器流量.你想要做的是在响应上设置一个断点,然后在将它发送到客户端之前摆弄它.

以下是一些不同的方法:

  1. 规则>自动断点>响应后
  2. 在quickexec框(底部的黑框)中输入"bpafter yourpage.svc".现在,Fiddler将在对包含"yourpage.svc"的任何URL的所有请求之前停在断点处.键入"bpafter",不带参数以清除断点.
  3. 使用FiddlerScript以编程方式篡改响应.FiddlerScript的最佳文档在官方网站上:http://www.fiddler2.com/Fiddler/dev/

一旦你在断点处停止响应,只需双击它就可以在检查员中打开它.你现在有几个选择:

  1. 在绿色的"运行至完成"按钮(您单击以发送响应)旁边,有一个下拉列表,可让您选择一些默认响应类型.
  2. 或者,在Headers检查器上,更改顶部文本框中的响应代码和消息.
  3. 或者,单击"原始"检查器并弄乱原始响应以对其执行任意操作.同样是一个很好的方法来查看客户端在收到格式错误的响应时所执行的操作,您可能会意外地测试:)


小智 10

另一种方法是使用Fiddler的AutoResponder选项卡(在右侧面板上).这允许您捕获对与字符串匹配的任何URI的请求,并从文件中提供"预制"响应.该文件可以包含标头和有效负载.这种方法的优点是您不必编写FiddlerScript,也不必通过断点手动处理每个请求.

您可以在Fiddler中设置规则,如下所示(确保您启用不匹配的请求,否则所有其他http请求都将失败).

提琴手自动回复设置 在此示例中,任何URI包含"fooBar"的请求都将获得预设响应.文件的格式将根据您的API而有所不同(您可以使用浏览器拦截"真实"响应并以此为基础)但我的看起来如下所示:

HTTP/1.1 409 Conflict
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Max-Age: 86400
Content-Type: application/vnd.api+json
Content-Length: 149
Date: Tue, 28 Mar 2017 10:03:29 GMT

{"errors":[{"code":"OutOfStock","detail":"Item not in stock","source":{"lineId":{"type":"Order line Number","id":"1"}},"meta":{"availableStock":0}}]}
Run Code Online (Sandbox Code Playgroud)

我发现它需要在最后一行的末尾(即在json之后)返回一个回车符,并且Content-Length头必须与json中的字符数相匹配,否则webapp会挂起.你的旅费可能会改变.