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 当作,需要增加:
FServer.OnQuerySSLPort := OnQuerySSLPort;//这里的 FServer 是:TIdHTTPWebBrokerBridge
//也就是一个 TIdHTTPServer
为它增加一个事件绑定的方法。该方法的代码如下:
procedure TForm1.OnQuerySSLPort(APort: TIdPort; var AUseSSL: Boolean);
beginAUseSSL := True;APort := 8080;
end;
也就是要为它指定端口号,而不仅仅是指定它的 http 的工作端口号。
FServer.DefaultPort := 8080;
而以前我的代码仅仅只有 FServer.DefaultPort := 8080; 因此在 Delphi 12 重新编译后就不能正常工作了。