使用Fiddler模​​拟HTTP POST请求的数据包之间的延迟

时间:2013-01-16 16:43:55

标签: asp.net xmlhttprequest fiddler

我可以看到如何使用ScriptEditor编写Fiddler中的整体延迟,使用类似这样的内容:

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

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

我正在尝试模拟0.3%的网络客户端发生的问题,我们正在接收请求标头,但缺少请求正文没有一致的用户代理。各种浏览器和操作系统似乎都受到影响。所有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上运行。

1 个答案:

答案 0 :(得分: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中就会发生这种情况(例如,参见Why is IE 10 Refusing to send POST data via jQuery $.ajax)。

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