我还没有太多信息可以在这里使用。我们的应用程序向我们的服务器发送一个 HTTP 查询,并且在我们迄今为止使用的所有情况下它都运行良好。但是对于一个网络通过代理的客户端,他们的日志表明请求成功发出,但没有回复返回,我们的网络服务器在日志中没有显示任何关于收到任何东西的信息(在发生故障的时间段) ,日志中显示的只是从安装程序内部下载 ZIP,正如我接下来提到的那样)。对于他们网络上的任何人,这种情况一直发生。
一件奇怪的事情是应用程序的安装程序发送了一个 ZIP 文件的 HTTP 请求,它完成得很好,但是在启动应用程序时,它的第一个请求(对 PHP 文件)失败了。它们共享用于发出请求的相同基本代码,但只是发送不同的参数。我一直在努力找出这两个调用的真正不同之处,基本上可以归结为:
- 一个正在请求一个zip文件,另一个正在向一个php文件发送参数;文件类型过滤?
- 失败的那个添加了一些额外的 header 参数。如果他们被代理剥离,我会理解,但如果它有自定义/不支持的 header ,它能完全放弃请求吗?
下面是函数调用的基本骨架结构:
HINTERNET hInternetOpen = InternetOpen( szAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
HINTERNET hInternetConnect = InternetConnect( hInternetOpen, "www.server.com", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, 0 );
HINTERNET hRequest = HttpOpenRequest( hInternetConnect, "GET", "path/query.php?params=etc", NULL, NULL, "*/*", INTERNET_FLAG_RELOAD, 0 );
// Here I was including some custom headers, such that szHeaders would look something like:
// "KEY:12345\nTZ:New_York\n"
HttpSendRequest( hRequest, szHeaders, dwHeadersLen, NULL, 0 );
InternetReadFile( hRequest, lpBuf, dwBufSize, &dwAmtRead );
我将设置一个新版本,它将提供更多的错误检查,以确定请求的哪一部分失败以及返回了哪些错误代码。它还将取消自定义 header ,以及它与安装程序之间的任何其他不一致。
我真的不太相信那东西真的是原因,所以与此同时,我正在寻找关于可能出了什么问题的猜测,或者我应该仔细检查或注意哪些事情.我最初确信这只是他们锁定网络的过滤问题,但通过与他们的 IT 团队交谈,他们提出的请求并没有被他们阻止。也许我在做一些不规范的事情。
最佳答案
关于c++ - 来自应用程序的 HTTP 请求在发件人的网络/代理和我们的网络主机之间消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3687960/