如何在 IE8 BHO 中捕获级联 302 重定向?

发布于 2024-10-16 02:21:56 字数 638 浏览 1 评论 0原文

我目前正在为我的公司完成一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一世旳自豪 2024-10-23 02:21:56

尝试使用 IHttpNegotiate 深入了解 HTTP。但这与将 HTTP 嗅探器注入您的应用程序相同。

Try to deep into HTTP using IHttpNegotiate. But it same as injecting a HTTP sniffer into your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文