我使用PassthruAPP方法挂钩到HTTP/HTTPS通过IE提出的请求。挂钩IE中的HTTP/HTTPS协议使GET请求是连续的
它的工作以及在大多数情况下,但是我注意到一个问题。一次只有一个下载线程处于活动状态,通常IE使用两个下载线程。我可以看到创建了两个IInternetProtocol对象,但IE一次只能使用一个。
这与IE7发生的事情,我还没有与其他版本试过没。
这个问题似乎是IE回落到下载的项目之一在当IInternetSession::RegisterNameSpace
被要求任何的默认处理程序的时间。即使我正在注册HTTPS处理程序,下面的代码导致HTTP下载顺序。注册'file://'会导致相同的问题。
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代码可以同时加载图像。
顺便说一下,IE8 +中这个问题更严重,其中默认连接限制更高。 – EricLaw 2010-04-08 02:24:07
刚刚测试过,我在IE8的任何时候都有两个活动的下载线程,而没有定义自定义协议处理程序时的缺省值6。 – watsonmw 2010-04-08 18:46:41
@EricLaw在IE9,10和课程11中,这是否已被“固定”?或者我们不得不挂钩COM VTable .. – 2013-09-28 22:23:39