如何在 IE8 BHO 中捕获级联 302 重定向?
我目前正在为我的公司完成一个 C++ BHO 项目,在这个过程中我发现了一个非常严重的错误,比我预期的要晚得多。我有一个 BHO,当前使用 SINK 来捕获 BeforeNavigate2、NavigateComplete2、NavigateError 和其他几个事件,但我遇到了捕获 302 重定向 URL 的问题。
举例来说,假设我们有 4 个站点:
起始站点 A 具有指向 B 的链接 302 重定向到站点 C 的站点 B 302 重定向到站点 D 的站点 C, 最终站点 D
用户从站点 A 开始:单击站点 B:站点 B 重定向到站点 C,站点 C 重定向到站点 D:用户最终到达站点 D。
在这种情况下,我的 BeforeNavigate2 将捕获站点 B 的 URL,而我的NavigateComplete 将捕获站点 D 的 URL。但站点 C 对我的 BHO 来说是完全不可见的。在这种情况下,您可以在 B 和 D 之间添加任意数量的 302,但我无法捕获其中任何一个。
注意:我在 Internet Explorer 7 中通过向 GetHostInfo 标志添加 DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION 解决了这个问题,这使得每个重定向都会触发 BeforeNavigate2。但 IE8 似乎不尊重这个标志:(
I am currently finishing up a C++ BHO project for my company, and I discovered a pretty critical bug a lot later in the process than I had hoped. I have a BHO that currently uses SINK to capture BeforeNavigate2, NavigateComplete2, NavigateError, and several other events, but I am running into an issue capturing 302 redirect URLs.
So for example, lets say we have 4 sites:
a starting site A that has a link to B
a site B that 302 redirects to site C
a site C that 302 redirects to site D,
a final site D
The user starts on site A: clicks site B: site B redirects to site C, site C redirects to site D: user winds up at site D.
In this scenario, my BeforeNavigate2 will capture site B's URL, and my NavigateComplete will capture site D's URL. But site C is completely invisible to my BHO. You could add any number of 302s in-between B and D in this scenario and I'm not able to capture any of them.
Note: I solved this in Internet Explorer 7 by adding a DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION to the GetHostInfo flag, which made every redirect trigger a BeforeNavigate2. But it appears IE8 does not respect this flag :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用 IHttpNegotiate 深入了解 HTTP。但这与将 HTTP 嗅探器注入您的应用程序相同。
Try to deep into HTTP using IHttpNegotiate. But it same as injecting a HTTP sniffer into your application.