如何使用Fiddler修改HTTP响应中的状态码?
我需要testing我编写的一些客户端应用程序代码,以testing其对来自Web服务器的HTTP响应中返回的各种状态代码的处理。
我有Fiddler 2(Webdebugging代理)安装,我相信有一种方法来修改使用这个应用程序的反应,但我努力找出如何。 这将是最方便的方式,因为这样可以让我无需修改客户端和服务器代码。
任何人都可以协助,因为我想拦截从服务器发送到客户端的HTTP响应,并在到达客户端之前修改状态码?
任何意见将不胜感激。
好吧,我假设你已经能够监控你的客户/服务器stream量。 你想要做的就是在响应中设置一个断点,然后把它发送到客户端。
这里有几种不同的方式来做到这一点:
- 规则“>”自动断点“>”响应后“
- 在quickexec框(底部的黑框)中input“bpafter yourpage.svc”。 现在Fiddler将在所有请求包含“yourpage.svc”的任何URL之前停止在断点处。 input“bpafter”不带参数清除断点。
- 以编程方式篡改使用FiddlerScript的响应。 FiddlerScript的最佳文档位于官方网站上: http : //www.fiddler2.com/Fiddler/dev/
一旦你在断点处有一个响应停止,只需双击它在检查器中打开它。 你现在有几个select:
- 紧挨着绿色的Run to Completionbutton(你点击发送响应)旁边有一个下拉菜单,可以让你select一些默认的响应types。
- 或者,在标题检查器上,更改顶部文本框中的响应代码和消息。
- 或者,点击“原始”检查器,并与原始的响应混乱做任意事情。 也是一个很好的方式来看看你的客户做什么,当它得到一个畸形的响应,你可能会意外地testing:)
另一种方法是使用Fiddler的AutoResponder选项卡(在右侧面板上)。 这允许您捕获任何匹配string的URI的请求,并从文件中提供“canned”响应。 该文件可以包含头文件和有效载荷。 这种方法的优点是你不必编写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}}]}
我发现它需要在最后一行(即json之后)的回车,并且Content-Length头必须匹配json中的字符数,否则webapp将挂起。 你的旅费可能会改变。