Pergunta

Estou usando o Passthruapp Método para conectar -se às solicitações HTTP/HTTPS feitas pelo IE.

Está funcionando bem na maior parte, no entanto, notei um problema. Apenas um tópico de download está ativo de cada vez, normalmente o IE usa dois threads de download. Eu posso ver dois objetos iinternetProtocol sendo criados, mas o IE usa apenas um de cada vez.

Isso está acontecendo com o IE7, ainda não tentei com outras versões.

O problema parece ser que o IE volta a baixar itens um de cada vez quando IInternetSession::RegisterNameSpace é chamado para qualquer um de seus manipuladores padrão. O código abaixo causa Http Downloads para serem seqüenciais, embora eu esteja registrando um Https manipulador. O registro do 'arquivo: //' causa o mesmo problema.

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

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

Isso sempre acontece nos primeiros itens da página, mas parece que, após a emissão do documento, os downloads simultâneos podem ocorrer novamente. Por exemplo, o código JavaScript que é executado após a página terminar de carregar pode carregar imagens simultaneamente bem.

Foi útil?

Solução

É possível contornar esse problema, corrigindo o conflito para InternetProtocolRootEx::StartEx() nos protocolos HTTP/HTTPS registrados. Como isso não substitui o manipulador de protocolo diretamente, o IE não fará o fallback do modelo de encadeamento único.

A técnica é descrita aqui:

http://web.archive.org/web/20130313164317/http://www.blackfishsoftware.com/blog/don/passhroughapp_bho_toolbar_intercepting_requests_ressenses

Outras dicas

Sim, isso é conhecido, por design e documentado em vários lugares. (É feito porque não podemos fazer suposições sobre a segurança do fio dos manipuladores de protocolo)

Essa é uma das muitas razões pelas quais é sugerido que você não tente embrulhar os protocolos HTTP/HTTPS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top