Delphi 12 基于 Indy 的 WebServer 的 https 实现的问题

概要

使用 Delphi 开发一个自带 HTTP Server 的 WebServer 程序或者 WebService 服务器端程序,是基于 Indy 的 TIdHTTPServer 来实现的。如何为它增加 https 的功能?之前我有博客文章写如何实现:

Delphi 开发的基于 Indy 的 WebBroker 或者 WebService 服务器支持 https_delphi webservices ssl-CSDN博客

还有另外一篇:

使用 Indy WEB Server 支持 https_brokerbridge indy-CSDN博客

问题来了

当时是使用 Delphi 10.3 / 10.4 来测试的。

现在我使用 Delphi 12 社区版重新编译当时写这个博客时的程序,编译运行后,客户端或者浏览器不能正确访问新编译的服务器程序了。

问题的原因和解决

我之前的测试程序,作为一个服务器端程序,是工作在 8080 端口上的。在新版的 Delphi 12 当作,需要增加:

Delphi 复制代码
FServer.OnQuerySSLPort := OnQuerySSLPort;

//这里的 FServer 是:TIdHTTPWebBrokerBridge
//也就是一个 TIdHTTPServer

为它增加一个事件绑定的方法。该方法的代码如下:

Delphi 复制代码
procedure TForm1.OnQuerySSLPort(APort: TIdPort; var AUseSSL: Boolean);
begin
  AUseSSL := True;
  APort := 8080;
end;

也就是要为它指定端口号,而不仅仅是指定它的 http 的工作端口号。

Delphi 复制代码
FServer.DefaultPort := 8080;

而以前我的代码仅仅只有 FServer.DefaultPort := 8080; 因此在 Delphi 12 重新编译后就不能正常工作了。