应用需要Fiddler才能在部分PC上正常执行

Application Needs Fiddler to Execute Properly on Some PCs

我有一个 VB6 应用程序,在特定条件下只有 运行s。当它失败时(在下面的发送语句中),它会生成一个

运行-时间错误'-2147012867 (80072efd)': 无法建立与服务器的连接

有趣的是,当 Fiddler 运行ning 时,它总是 运行s。在某些机器上 运行s Fiddler 是否 运行ning,但在其他机器上它只会 运行 当 Fiddler 运行ning 时。 Fiddler 甚至不必为其捕获流量 运行.

请求发送到 https 站点。

代码如下所示:

Set xhr = CreateObject("WinHttp.WinHttpRequest.5.1")
xhr.open "POST", sUrl, bAsync
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xhr.setRequestHeader "Content-Length", Len(sBody)
xhr.send sBody

我已阅读 Telerik 文章,Help! Running Fiddler Fixes My App???,但 none 的建议解决方案似乎有效。

谁能告诉我可能出了什么问题或我该如何解决这个问题?

将代理设置为 HTTPREQUEST_PROXYSETTING_DIRECT 解决了问题。

' Important Note: The setProxy setting of 1 corresponds to HTTPREQUEST_PROXYSETTING_DIRECT
' (see https://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx)
' Without this, the app would only work on the dev machine when Telerik Fiddler was also
' running. Oddly, the app would run correctly on all other machines.

Set xhr = getRequestObject()
xhr.setProxy 1
xhr.open "POST", sUrl, bAsync
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xhr.setRequestHeader "Content-Length", Len(sBody)

上面引用的 Microsoft 文章给出了 Proxy 可以设置的常量的三个值。我不明白为什么 "Direct" 设置有效,但确实有效。

感谢 Jeandey 和其他看过此内容的人。

您能检查一下您的 WinHttpSettings 注册表项设置吗?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\WinHttpSettings

默认值(无代理)是

我想 Fiddler 修改了此配置以充当代理。

如果 Fiddler 不是 运行 => 没有代理 => 连接错误。

WinHttpRequest中,如果没有显式调用setProxy => HTTPREQUEST_PROXYSETTING_DEFAULT => HTTPREQUEST_PROXYSETTING_PRECONFIG

HTTPREQUEST_PROXYSETTING_PRECONFIG

Indicates that the proxy settings should be obtained from the registry.