В настоящее время я заканчиваю проект CHO BHO для своей компании, и обнаружил довольно серьезную ошибку намного позже, чем я надеялся. У меня есть BHO, который в настоящее время использует SINK для захвата BeforeNavigate2, NavigateComplete2, NavigateError и некоторых других событий, но я столкнулся с проблемой захвата 302 URL перенаправления.
Например, предположим, у нас есть 4 сайта:
стартовый сайт A, имеющий ссылку на B
сайт B, который 302 перенаправляет на сайт C
сайт C, который 302 перенаправляет на сайт D,
финальный сайт D
Пользователь запускается на сайте A: нажимает на сайт B: сайт B перенаправляет на сайт C, сайт C перенаправляет на сайт D: пользователь попадает на сайт D.
В этом случае мой BeforeNavigate2 будет захватывать URL-адрес сайта B, а мой NavigateComplete будет захватывать URL-адрес сайта D. Но сайт C совершенно невидим для моего BHO. В этом сценарии вы можете добавить любое число 302 между B и D, и я не смогу захватить ни одного из них.
Примечание. Я решил эту проблему в Internet Explorer 7, добавив DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION к флагу GetHostInfo, что делало каждый триггер перенаправления BeforeNavigate2. Но, похоже, IE8 не уважает этот флаг: (