在 Delphi 10.4 中,当通过 TWebBroswer 连接时,如何向 WebBroker (TWebModule) 提供客户端 tcp 端口?

In Delphi 10.4 how do I provide the client tcp port to a WebBroker (TWebModule) when connecting via a TWebBroswer?

也许我没有搜索正确的术语,或者这不是人们通常关心的事情,但我根本找不到如何获取客户端连接的 TCP 端口。

我有一个使用 TWebBrowser 的客户端和一个具有 Delphi WebModule 运行 的 Apache 服务器。客户端连接到端口 80 上的 URL,在此我需要报告客户端正在使用的端口。

在 WebModule 端,我可以收集传入连接的 IP 地址 (Request.RemoteAddr) 以及它在 POST 正文中发送的任何变量,但我似乎无法获取它所在的端口源自.

我使用 Indy 找到了对此的一些解释,但没有任何帮助我在客户端或服务器端实现有用的东西。我不确定从这里到哪里去,所以欢迎任何建议。

可悲的是,TWebRequest 根本不公开客户端的端口,或者访问底层 request/socket 需要,因此您可以手动获取客户端的端口。

这是 WebBroker 本身的限制,而不是 Indy(它是 WebBroker 可以通过 Indy 的 IdHTTPWebBrowserBridge 单元使用的可用后端之一。Indy 可以访问客户端端口,但您不能无法访问 WebBrowker 内部使用的 Indy HTTP 服务器。