Proxy 使用默认超时,ServerXMLHTTP超时时间不到2秒

Proxy 使用默认超时,ServerXMLHTTP超时时间不到2秒,proxy,xmlhttprequest,credentials,winhttprequest,Proxy,Xmlhttprequest,Credentials,Winhttprequest,我有一个问题涉及使用ServerXMLHTTP对象发送HTTPS GET请求时超时 为了欺骗对象发送带有登录用户id和密码的请求,我将其设置为使用虚拟代理,然后在intranet上排除URL的域。所以变量url_to_get包含.mydomain.com,而代理地址实际上不是.used.com // JScript source code HTTP_RequestObject = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0"); // Using l

我有一个问题涉及使用ServerXMLHTTP对象发送HTTPS GET请求时超时

为了欺骗对象发送带有登录用户id和密码的请求,我将其设置为使用虚拟代理,然后在intranet上排除URL的域。所以变量url_to_get包含.mydomain.com,而代理地址实际上不是.used.com

// JScript source code
HTTP_RequestObject = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");

// Using logged in username authentication
HTTP_RequestObject.open("GET", url_to_get, false);
HTTP_RequestObject.setProxy(2, "not.used.com", "*.mydomain.com");

try
{
   HTTP_RequestObject.send();
}
catch (e)
{
}
在catch块中,我记录了一个异常0x80072EE2,操作超时。这是在打开前的日志消息之后1到2秒的时间戳


重试将按预期工作,并且可以反复执行。这是服务器端的东西吗?还是代理的结果?

这是痛苦和尴尬的。我找到了超时问题的根本原因。我将超时设置为比实际默认值小3个数量级的默认值。因此,即使我将它们增加到我认为非常大的值,我仍然比默认值短

我粗略地浏览了表上的措辞,并误解了参数的时基。我假设是秒,实际上是毫秒

在调试这个问题的过程中,我使用可选的COM对象WinHttp.WinHttpRequest.5.1复制了代码,并在验证等效API时发现了错误

在这个过程中,我确实学到了一些东西,所以一切都不会丢失,WinHttp.WinHttpRequest.5.1有一个SetAutoLogonPolicy[3]方法,它允许我跳过Msxml2.ServerXMLHTTP.6.0所要求的hokey代理愚蠢,迫使它将用户的凭据发送到intranet服务器。我也和提琴手玩过,学到了很多危险的东西

希望其他人能从我的错误中吸取教训,并在将来调试自己的问题时发现这一点很有用

以下是一些内联链接,因为我没有足够的代表发布两个以上:

[3] :msdn.microsoft.com/en-us/library/windows/desktop/aa384050%28v=vs.85%29.aspx

[4] :fiddler2.com

Msxml2.ServerXMLHTTP.6.0可以通过代理使用。我花了一段时间,但坚持得到了回报。在微软的建议下,我从WinHttp.WinHttpRequest.5.1迁移到了Msxml2.ServerXMLHTTP.6.0

其中varHTTP是对Msxml2.ServerXMLHTTP.6.0的对象引用,您可以使用它

varHTTP.setproxy 2, ProxyServerName, "BypassList"
希望这对您有所帮助,您可以继续使用Msxml2.ServerXMLHTTP.6.0