0

我可以看到如何使用 ScriptEditor 在 Fiddler 中编写整体延迟脚本,使用如下内容:

if (oSession.HostnameIs("www.testsite.co.uk")) {
    oSession["request-trickle-delay"] = "500";
}

但是,我需要更具体并指定包含标头的请求的第一个数据包和包含 body 的辅助数据包之间的延迟。

我正在尝试模拟 0.3% 的 Web 客户端发生的问题,我们从这些客户端接收请求标头,但缺少请求正文。没有一致的用户代理。各种浏览器和操作系统似乎都受到了影响。所有 POST 请求都源自 XMLHttpRequests (XHR)。它们看起来像这样,并且包含 JSON 主体:

POST http://www.sitename.co.uk/folder/controller/list HTTP/1.1
Host: www.sitename.co.uk
Connection: keep-alive
Content-Length: 245
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://www.sitename.co.uk
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
Content-Type: application/json
Referer: http://www.sitename.co.uk/folder/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: **removed**

{"bb":{"tl":{"lat":51.590527931951975,"lng":-0.636399852539089},"tr":{"lat":51.590527931951975,"lng":0.42652739355466096},"bl":{"lat":51.29736817638294,"lng":-0.636399852539089},"br":{"lat":51.29736817638294,"lng":0.42652739355466096}},"b":true}

我检查了在防火墙级别设置的 MTU 大小,它设置为 1500,我认为这很好。

Web 服务器位于负载平衡器后面,并在 Windows Server 2008 R2 64 位上运行 IIS 7.5。网站在 ASP.NET MVC3 上运行。

4

1 回答 1

1

值得一提的是,标头可能位于多个 TCP/IP 数据包中,并且没有什么要求正文与标头位于不同的数据包中。但我假设您正在松散地使用术语数据包

Fiddler v2.4.2.6 有一个Request-Body-Delay会话标志,可以启用您正在寻找的延迟;将其设置为例如5000以将身体延迟 5 秒。(v2.4.2.6 目前处于 alpha 阶段:https ://fiddler2.com/dl/fiddler2alphasetup.exe )

FWIW,可能标头已发送,但 POST 正文未发送。如果您安装了有问题的插件,则在 IE 中可能会发生这种情况(例如,请参阅为什么 IE 10 拒绝通过 jQuery $.ajax 发送 POST 数据)。

如果连接断开,也会出现此问题。例如,如果您尝试在 OnBeforeUnload 方法中执行 POST,则可能会发送标头,但在发出 POST 正文之前进程会被终止。

于 2013-01-16T17:38:58.077 回答