在 FireMonkey TWebBrowser 中指定 IP 地址

Posted

技术标签:

【中文标题】在 FireMonkey TWebBrowser 中指定 IP 地址【英文标题】:Specifying an IP Address in FireMonkey TWebBrowser 【发布时间】:2021-07-04 00:05:25 【问题描述】:

FireMonkey TWebBrowser 组件允许开发人员指定本地文件 (file://...) 或 URL (https://www...)。但是,似乎无法通过指定 IP 地址(192.168.1...http://192.168.1... 等)使浏览器正常工作。浏览器似乎只是挂起。

是否可以使用此组件指定 IP 地址?

我目前正在使用 Delphi 10.4.2 为 iPhone 开发。同一部手机上的 Safari 访问 192.168.1... 地址没有问题。

【问题讨论】:

标准 iPhone 浏览器 (Safari) 可以在例如在地址栏中输入 192.168.1.140 时工作。 TWebBrowser 在使用 URL(例如 www.mait.com.au)时有效,但在指定 IP 地址时无效。由于它是为 iPhone 编写的,因此尚未在 Windows 环境中进行测试。 http 对我来说可以正常工作,https 不行,这可能是意料之中的,但它甚至没有显示警告。请参考:quality.embarcadero.com/browse/RSP-33646 谢谢戴夫。这可能是问题所在。在我的开发环境中关闭 https 现在允许通过本地网络进行访问。 【参考方案1】:

使用 HTTPS 协议和 IP 地址导航到网站将在大多数浏览器中被阻止。为什么?用于确认特定网站有效性的网站证书是基于域的,而不是基于 IP 的。

这意味着只有当您使用为其颁发网站数字证书的有效域导航到该网站时,该网站才会被视为安全。

但是当您尝试使用托管它的服务器的 IP 地址导航到此类站点时,大多数浏览器会将站点证书标记为无效,从而停止导航到此类站点。这是为了防止您被重定向到不属于已为其颁发 Web 证书的特定域的另一台服务器。


PS:即使使用默认浏览器,您也可以进行测试。尝试使用格式为 https://x.x.x.x:443 的 URL 导航到 HTTPS 站点。

请注意我是如何将443 添加到指定 URL 的末尾的。 443 是默认的 HTTPS 端口。尽管您在 URL 中指定了 HTTPS 协议,但大多数浏览器未将此端口号指定为 URL 的一部分,将始终尝试使用用于 HTTP 的端口 80 进行导航。

现在,如果网站同时支持 HTTP 和 HTTPS 协议,尽管您在 URL 中指定了 HTTPS 协议,但您最终可能会访问 HTTP 网站。


如果该 HTTP 网站提供自动重定向到 HTTPS 网站,您最终可能最终会使用该网站的 HTTPS 版本。但它不会是包含您指定的 IP 地址的 HTTPS 站点,而是该站点的正确域名。

您可以通过尝试使用上述方法导航到https://142.250.180.174/ 来看到这一点,这实际上是google.com 的服务器。

注意:并非所有网站都支持这一点。例如,您无法使用这种方法访问 embarcadero.com 的 HTTPS 站点。

【讨论】:

以上是关于在 FireMonkey TWebBrowser 中指定 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TWebBrowser 中居中和拉伸/收缩 SVG 显示?

在默认浏览器中打开 TWebBrowser 链接

如何从 TWebBrowser 获取图像到 TImage

在 TWebbrowser 中禁用同源策略

Delphi:在 TWebBrowser 中显示 PDF

检测可编辑 TWebBrowser 中的更改