Delphi 在TWebBrowser控件内检测服务器端重定向

Delphi 在TWebBrowser控件内检测服务器端重定向,delphi,url-redirection,http-redirect,twebbrowser,Delphi,Url Redirection,Http Redirect,Twebbrowser,我正在实现OAuth 2.0登录,它使用到“”的服务器端重定向将必要的数据传递给客户端应用程序。 但是在这种情况下不会触发TWebBrowser.BeforeNavigate2事件 我已经彻底搜索了一遍,试图找到一种在TWebBrowser控件中检测服务器端重定向(并自己处理)的方法(如果可能的话) 作为一种解决方法,我实现了TWebBrowser.NavigateComplete2事件。但是,由于本地主机上没有运行HTTP服务器(通常),因此在启动它之前需要一些时间 我想在webbrowser

我正在实现OAuth 2.0登录,它使用到“”的服务器端重定向将必要的数据传递给客户端应用程序。 但是在这种情况下不会触发TWebBrowser.BeforeNavigate2事件

我已经彻底搜索了一遍,试图找到一种在TWebBrowser控件中检测服务器端重定向(并自己处理)的方法(如果可能的话)

作为一种解决方法,我实现了TWebBrowser.NavigateComplete2事件。但是,由于本地主机上没有运行HTTP服务器(通常),因此在启动它之前需要一些时间


我想在webbrowser尝试导航到重定向之前检测重定向,并解析URL的数据,然后跳过导航到本地主机。

默认情况下,
TwebbBrowser
不会触发重定向事件<代码>OnBeforeNavigate2在重定向之前为初始URL激发,然后在重定向之后激发
OnNavigateComplete
。您可以比较这两个事件提供的URL,以了解是否发生了重定向

但是,如果您启用浏览器的
DOCHOSTUIFLAG\u enable\u REDIRECT\u通知
标志,您将获得一个用于重定向的
OnBeforeNavigate2
事件,并且可以根据需要取消重定向

要启用该标志,您需要实现接口方法

如果您正在使用10.0或更高版本,
TWebBrowser
已经为您实现了
IDocHostUIHandler
,因此只需从
twebrowser
派生并根据需要重写
GetHostInfo()


否则,对于早期版本,您可以编写一个实现
IDocHostUIHandler
的单独类,然后可以查询浏览器的接口并调用其方法

默认情况下,
TWebBrowser
不会触发重定向事件<代码>OnBeforeNavigate2在重定向之前为初始URL激发,然后在重定向之后激发
OnNavigateComplete
。您可以比较这两个事件提供的URL,以了解是否发生了重定向

但是,如果您启用浏览器的
DOCHOSTUIFLAG\u enable\u REDIRECT\u通知
标志,您将获得一个用于重定向的
OnBeforeNavigate2
事件,并且可以根据需要取消重定向

要启用该标志,您需要实现接口方法

如果您正在使用10.0或更高版本,
TWebBrowser
已经为您实现了
IDocHostUIHandler
,因此只需从
twebrowser
派生并根据需要重写
GetHostInfo()


否则,对于早期版本,您可以编写一个实现
IDocHostUIHandler
的单独类,然后可以查询浏览器的接口并调用其方法

相关:as
TWebBrowser
是一款嵌入式IE浏览器。相关:as
TWebBrowser
是一款嵌入式IE浏览器。实现
IDocHostUIHandler
界面成功-谢谢。
DOCHOSTUIFLAG\u ENABLE\u REDIRECT\u NOTIFICATION
的值是
$04000000
这个问题也在这里被询问和回答:(但我没有找到它…)实现
IDocHostUIHandler
接口就成功了-谢谢。
DOCHOSTUIFLAG\u ENABLE\u REDIRECT\u NOTIFICATION
的值为
$04000000
这里也提出并回答了这个问题:(但我没有找到它…)