情况:
1)我需要在Windows上的C++中为我们的DLL进行HTTP [S]网络调用。
2)需要至少支持XP(我想SP3可以)
3)没有ATL,没有MFC,没有IE

问题:
我最近从Boost cpp-netlib切换到使用MSXML的IXMLHTTPRequest来满足Windows上的(非常简单的)网络需求。虽然一切似乎都很好,但我们注意到重定向不起作用。在 fiddler 中,我得到一个HTTP 302,然后是第二个成功的HTTP 200请求/响应。

但是,在实际的C++代码中,我从IXMLHTTPRequest-> Send获得E_ACCESSDENIED,并且HTTP响应代码为零。因此,在代码中,我无法知道实际发生了什么。

由于Fiddler一切正常,因此我尝试使其异步并检查回调,还尝试了IXMLHttpServerRequest,IXMLHttpServerRequest2和MSXML v6,但没有一个起作用。

注意:我们在WinRT上使用IXMLHttpRequest2,并且工作正常(处理OnRedirect事件)。

无论如何,有没有让MSXML的IXMLHTTPRequest处理重定向?

还是我需要切换到WinInet/WinSockets/WinHttp?我认为我需要使用WinHttp(因为我需要支持Windows Services/IIS,而WInInet显然不支持,而WinSockets对于我的需求来说太低了)。

谢谢!

最佳答案

我已经很长时间没有这样做了,所以这个答案可能有点过时了。我记得,IXMLHTTPRequest的重定向策略非常严格。重定向使用与原始请求相同的来源吗?如果是这样,可能会违反导致您出错的安全限制。

如果这实际上是问题所在,请尝试使用IServerXMLHTTPRequest。

关于windows - 如何获取MSXML IXMLHTTPRequest来处理HTTP重定向?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17180017/

10-12 03:45