我使用的 PassthruAPP 方法钩到HTTP / HTTPS请求由IE制成。

它在大多数情况下工作良好,但是我注意到一个问题。只有一个下载线程是活动的时候,通常IE使用了两个下载线程数。我可以看到两个IInternetProtocol对象入门创建,但IE只使用一次一个。

此与IE7发生,我还没有与其他版本试图尚未。

这个问题似乎是IE回落到下载的项目之一在当IInternetSession::RegisterNameSpace被要求任何的默认处理程序的时间。下面的原因代码的 HTTP 下载是连续的,即使我登记的 HTTPS 处理程序。注册关于“文件://”导致相同的问题

CComPtr<IInternetSession> spSession;
CoInternetGetSession(0, &spSession, 0);

MetaFactory::CreateInstance(CLSID_HttpSProtocol, &m_spCFHTTPS);
spSession->RegisterNameSpace(m_spCFHTTPS, CLSID_NULL, L"https", 0, 0, 0)

这总是发生在页面上的第几个项目,但似乎该文档完整发出后,会再次出现并发下载。对于在页面后执行的例子Javascript代码加载完成后可以加载图像同时就好了。

有帮助吗?

解决方案

这是可以通过打补丁的COM虚函数表上登记的HTTP / HTTPS协议InternetProtocolRootEx::StartEx()来解决这个问题。因为这不直接替换协议处理程序,IE不会后退到单个线程模型。

该技术描述如下:

HTTP://幅.archive.org /网络/ 20130313164317 / HTTP://www.blackfishsoftware.com/blog/don/passthroughapp_bho_toolbar_intercepting_requests_responses

其他提示

是,这是已知的,通过设计,并在不同的地方记录。 (它的完成,因为我们不能对协议处理的线程安全的假设)

这是其中的原因很多,它的建议,你不要试图包裹HTTP / HTTPS协议。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top