フッキングのhttp/httpsプロトコルにIEの原因取得しを要求する逐次
-
24-09-2019 - |
質問
私が使っているの PassthruAPP 方法フックへのHTTP/HTTPSリクエストによる打ち出されている。-
よいものかに気付いたので問題です。唯一のダウンロードのスレッドが同時に有効なのは、通常の家を使用してダウンロードす。できます。IInternetProtocol物を得たが、IEのみ使用します。
この一体なにが起きているのIE7りませんし、その他のバージョンはまだない。
この問題のようだが家によって異なりのダウンロード項目の一時 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のコードが実行された後に実行されるページのロードが完了する画像を同時にだけます。
解決
これは、登録されたHTTP / HTTPSプロトコルをInternetProtocolRootEx::StartEx()
のためのCOM仮想テーブルにパッチを当てることで、この問題を回避することが可能です。これは、直接プロトコルハンドラを置き換えるものではありませんので、IEはしません代替シングルスレッドモデルに。
技術がここで説明されます:
他のヒント
はい、これは設計によって、知られており、様々な場所で文書化されています。 (私たちは、プロトコルハンドラのスレッドの安全性についての仮定を行うことができないので、それは行われています)。
このは、あなたがHTTP / HTTPSプロトコルます。
をラップしようとしていないことを示唆していますことを多くの理由の一つであります