Pregunta

Estoy usando el PassthruAPP método para gancho en HTTP / HTTPS peticiones realizadas por IE.

Está funcionando bien en su mayor parte, sin embargo he notado un problema. Sólo una descarga hilo es activo a la vez, normalmente IE utiliza dos hilos de descarga. Puedo ver dos IInternetProtocol objetos personales creado, pero IE utiliza sólo uno a la vez.

Esto está sucediendo con IE7, no he probado con otras versiones todavía.

El problema parece ser que IE cae de nuevo a la descarga de elementos de uno en uno cuando IInternetSession::RegisterNameSpace se detiene por cualquier de sus controladores predeterminados. El código de abajo causas HTTP descargas a ser secuencial, aunque yo estoy registrando un HTTPS manejador. El registro para 'file: //' hace que el mismo 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)

Esto siempre ocurre durante los primeros elementos de la página, pero parece que después de la emisión del documento completo, descargas simultáneas pueden ocurrir de nuevo. Por ejemplo el código JavaScript que se ejecuta después de que la página ha terminado de cargar puede cargar imágenes al mismo tiempo muy bien.

¿Fue útil?

Solución

Es posible solucionar este problema mediante un parche en el Vtable COM para InternetProtocolRootEx::StartEx() en el domicilio protocolos HTTP / HTTPS. Dado que este no reemplaza el controlador de protocolo directamente, es decir no fallback al modelo de un solo hilo.

La técnica se describe aquí:

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

Otros consejos

Sí, esto se conoce, por diseño, y documentado en varios lugares. (Se hace porque no podemos hacer suposiciones acerca de la seguridad de los subprocesos de controladores de protocolo)

Esta es una de las razones de los muchos que se sugiere que usted no intenta envolver el HTTP / HTTPS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top