如何在IE8 BHO中捕获级联302重定向? 我目前正在为我的公司完成一个C++ BHO项目,在这个过程中我发现了一个非常严重的错误,这比我希望的要晚。我有一个BHO,目前使用SINK捕获BeforeNavigate2、NavigateComplete2、NavigateError和其他几个事件,但我在捕获302个重定向URL时遇到了一个问题

如何在IE8 BHO中捕获级联302重定向? 我目前正在为我的公司完成一个C++ BHO项目,在这个过程中我发现了一个非常严重的错误,这比我希望的要晚。我有一个BHO,目前使用SINK捕获BeforeNavigate2、NavigateComplete2、NavigateError和其他几个事件,但我在捕获302个重定向URL时遇到了一个问题,c++,com,internet-explorer-8,bho,C++,Com,Internet Explorer 8,Bho,例如,假设我们有4个站点: 具有到B的链接的起始站点a 302重定向到站点C的站点B 302重定向到站点D的站点C, 最后一个地点是D 用户从站点A开始:单击站点B:站点B重定向到站点C,站点C重定向到站点D:用户在站点D结束 在这个场景中,BeforeNavigate2将捕获站点B的URL,而NavigateComplete将捕获站点D的URL。但是我的BHO完全看不见站点C。在这个场景中,您可以在B和D之间添加任意数量的302,但我无法捕获其中任何一个 注意:我在InternetExplor

例如,假设我们有4个站点:

具有到B的链接的起始站点a 302重定向到站点C的站点B 302重定向到站点D的站点C, 最后一个地点是D

用户从站点A开始:单击站点B:站点B重定向到站点C,站点C重定向到站点D:用户在站点D结束

在这个场景中,BeforeNavigate2将捕获站点B的URL,而NavigateComplete将捕获站点D的URL。但是我的BHO完全看不见站点C。在这个场景中,您可以在B和D之间添加任意数量的302,但我无法捕获其中任何一个


注意:我在InternetExplorer7中解决了这个问题,在GetHostInfo标志中添加了一个DOCHOSTUIFLAG_ENABLE_REDIRECT_通知,使每个重定向触发器都成为BeforeNavigate2。但IE8似乎不尊重这个标志:

尝试使用IHttpNegotiate深入HTTP。但这与向应用程序中注入HTTP嗅探器相同。

FWIW,DOCHOSTUIFLAG_ENABLE_REDIRECT_通知仍然可以正常工作;您可能想联系Microsoft开发人员支持。我也这么认为,但我可以确认我在GetHostInfo中的其他MSHTML覆盖工作正常。我试着加入了DOCHOSTUIFLAG_SCROLL_NO,滚动条也不见了,所以我知道有些标志是有用的。我的同事正在与Microsoft开发人员支持人员交谈,希望他们能给我一个答案。总之,我们联系了Microsoft开发人员支持人员,结果发现这是IE8中的一个错误。这个bug在IE7或IE9中不存在,开发人员能够将其缩小到一个返回调用,该调用过早退出重定向,从而触发doc主机。所以我的公司最终使用了IHttpNegotiate,一切都很好。