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

Delphi 12 Athens 发布了! 另外,IDE的品质终于上了一层😘。可以说在RTL,IDE,Compiler,Platform几个方面都不同程度的进行了优化。这对于具有特定格式的字符串来说非常好,比如说内置JSON,XML,SQL,甚至HTML的字符串更为直观。唯一的缺憾是前后必然都有回车换行符,那么,[''']前后可以去掉回车,让字符串直接和其位于同一行吗?这次更新的细节还是比较多的,但主要还是多端(iOS、Android、macOS、Windows11)的支持优化,以及对C++支持的改善,如集成了 Visual Assist 👍。 阅读详情

概要

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

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

还有另外一篇:

使用 Indy WEB Server 支持 https_brokerbridge indy-优快云博客

问题来了

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

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

问题的原因和解决

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

FServer.OnQuerySSLPort := OnQuerySSLPort;

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

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

procedure TForm1.OnQuerySSLPort(APort: TIdPort; var AUseSSL: Boolean);
begin
  AUseSSL := True;
  APort := 8080;
end;

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

FServer.DefaultPort := 8080;

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

Delphi 12 重返雅典 (RAD Studio 12) 针对最新的处理器版本进行编译可在所有平台上实现最快的性能,并支持 macOS App Store 的通用打包。全面支持最新的 4k+ 高分辨率显示器,通过更清晰、更清晰的字体和图标以及整个 IDE 窗口(包括 VCL 和 FMX 表单设计器和代码编辑器)的高分辨率支持,改进了开发人员的日常活动。VCL 样式现在提供设计时支持:通过在设计时立即查看样式窗体和控件在运行时的外观,更快地创建样式 UI 的原型。通过对 SQL 命令的限制、对多个命令的阻止和 SQL 更改,实现更深入的应用程序安全性。 阅读详情

相关推荐

Delphi 12必备指南:使用Git集成Python4Delphi的完整步骤

在“Library Path”(库路径)中,设置Win32-bit和Win64-bit选项的路径。在安装Git之后,您需要在Delphi中设置Git路径。打开Delphi,选择“Options”(选项)菜单,然后选择“Version Control”(版本控制)选项卡。在Delphi中,选择“Tools”(工具)菜单,然后选择“Version Control”(版本控制)选项。在安装P4D之前,您需要下载并安装Git程序。这是Git的默认安装路径,如果您将Git安装在其他位置,请相应地更改路径。

4139

Delphi 12 β版新增两个有用功能

本文介绍了delphi 12 β版本新增的两个很有用的功能

sensor_WU 博客 4932

Delphi12安装体验

delphi12已经出来几个月了,相关配套的控件基本也跟上了,可以试用一下。

zxm8513优快云博客 5242

令人期待的Delphi 12.2来了!

在专注模式下,IDE只显示代码编辑器,以及基本的UI,让你避免思路被打断,也不会被很多的面板和功能分散注意力。你打开Delphi,Delphi LSP就在后台启动了,加载你工程的代码,以便能在你需要它的时候立即响应,Delphi将AI功能集成进来了,在设置中配置好你AI平台的接口地址和开发者密钥,之前的Delphi,只能添加jar文件,只能用Delphi实现jar中的接口,代码提示的速度非常快了,不用你Self.打出来等弹出要老半天了,我最期待的功能,想必也是开发APP的朋友们最期待的啦!

5414

Delphi 12 - 含工具、安装、控件、文章

关于 Delphi 12 特性介绍的文章,参见 《Delphi 12 发布了!》 :https://blog.youkuaiyun.com/weixin_41863029/article/details/134293793 《RAD Studio 12 的新功能细节》 : https://blog.youkuaiyun.com/weixin_41863029/article/details/134315967 安装: 看 ReaMe.txt 中的介绍,主要是 【配合你懂得】部分 IDE增强:GExperts_RS12_1.3.23_2023-11-08.exe 控件: - DevExpressVCL 23.1.4 HH 11.8 - KonopkaControls-290-7.0 - UniDAC 9.4.0 D12

Wireshark抓包分析:如何从HTTP流量中快速定位黑客攻击痕迹(附pcap文件)

本文通过Wireshark实战,详细解析了如何从HTTP流量中快速定位黑客攻击痕迹。文章提供了核心过滤策略,并重点剖析了如何识别SQL注入攻击的流量特征、揭露WebShell的隐蔽通信以及追踪攻击者在横向移动中的行为,帮助安全人员系统性地从pcap文件中还原完整攻击链。

sprite的博客 1009

使用 OpenSSL 为自己做证书实现自己的 HTTPS 服务器

一个面向公众的网站,如果想要对用户访问网站过程中的通讯进行加密,让户使用 HTTPS 的方式来访问,网站自己需要有自己的私钥,以及由可信任机构签发的证书。这是采用 HTTPS 访问的技术架构。 由可信任机构签发的证书,要钱。某些情况下,我们可以自己为自己签发证书。比如,开发者自己开发测试;比如,公司内部使用而不是面向公众的网络访问。 我在Delphi 开发的基于 Indy 的 WebBroker 或者 WebService 服务器支持 https这篇博客文章里面,讲到用自己制作的私钥和证书用于 De..

pcplayer的博客 3566

【车间调度】车间调度问题的分类

本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流。 车间调度问题的分类 根据工件和车间构成不同,车间调度问题可分为以下几种 1.单机调度问题 在单机调度问题(S,SMP)中,加工系统只有一台机床,待加工的工件有且仅有一道工序,所有工件都在该机床上进行加工。此问题是最简单的调度问题,当生产车间出现瓶颈机床时的调度就可视为此调度问题。 ...

weixin_51656605的博客 7429

实现KbmMw web server 支持https

在以前的文章里面介绍过kbmmw 做web server. 前几天红鱼儿非要我给他做一个支持https 的web server. 其实kbmmw 支持https 有好几种方法: 1. 使用isapi 部署到iis 或者是apache 上,使用iis 或apache 的https 功能; 2.通过代理方式,使用使用iis 或apache 的https 功能。 今天通过kbmmw 的原...

weixin_30301183的博客 141

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 187

保姆级教程:用Python仿真OFDM系统(附抗多径干扰优化方案)

本文提供了一份详细的Python仿真OFDM通信系统教程。通过NumPy和Matplotlib,从二进制比特流开始,逐步构建完整的OFDM系统模型,涵盖IFFT、循环前缀等核心概念。重点探讨了如何对抗多径干扰,并提供了优化方案,通过误码率曲线直观对比性能,适合通信工程学习和物理层开发实践。

weixin_29230649的博客 232

Delphi Http Https 最好的解决方法(二)

Delphi http https

2091

用Isaac Sim复现经典案例:手把手教你写Python脚本控制机械臂抓取(附避障算法调试心得)

本文详细介绍了如何使用NVIDIA Isaac Sim仿真系统复现机械臂抓取经典案例,包括Python脚本编写、避障算法调试等关键步骤。通过URDF模型导入、关节控制逻辑实现和RMPFlow避障配置等实战演示,帮助开发者快速掌握机器人仿真技术,特别分享了官方文档未提及的实用调试技巧和性能优化策略。

weixin_30632089的博客 407

Delphi12简单使用

参考书籍:Delphi8.0程序设计教程(张娟 编)

麋鹿不迷糊的博客 1595

Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台

Apache Ignite是一个高性能的分布式内存计算平台,支持内存缓存、分布式计算、流处理和机器学习等功能。它提供了低延迟的数据访问和强大的计算能力,适用于需要高性能和可扩展性的应用。将Apache Ignite集成到Spring Boot应用中,可以显著提高应用的性能和可扩展性。Spring Boot的简单配置和Ignite的强大功能相结合,使得开发和部署更加高效。首先,创建一个新的Spring Boot项目。可以通过Spring Initializr(https://start.spring.io/)

九天的专栏 2142

大模型产品Deepseek(七)、可视化本地知识库搭建详细教程(Cherry Studio)

Cherry Studio 为智能体的开发提供了一个强大的可视化平台,结合大模型和嵌入式知识库,它可以在多个应用场景中提供智能化的支持。如果你有进一步的需求或问题,可以继续在 Cherry Studio 中进行更多自定义配置,或者通过 API 调用集成到你的应用中。现在,知识库已经搭建并与 DeepSeek 模型连接好,接下来,我们将使用 Cherry Studio 提供的可视化界面进行智能提问。为了让智能体能够通过大模型查询到知识库中的信息,你需要为知识库配置索引和匹配模型。

xiaoqi270620903的专栏 1332

Delphi D12.2 下载地址集合(包括以前版本)

Delphi XE8 -- D13 下载地址集合(包括以前版本)

tanqth的专栏 3万+

微信小程序、H5微信公众号网页JSAPI:解决报错requestMerchantTransfer:fail:internal error(使用wx.requestMerchantTransfer错误)

如何解决requestMerchantTransfer:fail:internal error,微信小程序wx.requestMerchantTransfer报错,微信公众号H5网页使用jssdk调用wx.requestMerchantTransfer报错,JSAPI调起用户确认收款报错errMsg:“requestMerchantTransfer:fail:internal error“,微信小程序/H5 调起确认收款界面,JSAPI调起用户确认收款,微信公众号(H5),用户发起提现,商家转账给用户,用户

✅ 精选推荐文章 4966

【Delphi】最新版12中新功能:Sqids 数字生成短的唯一标识符

介绍Delphi中使用开源数据库 Sqids (数字生成短的唯一标识符)

sensor_WU 博客 2846

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Delphi】最新版12中新功能:Skia4Delphi

介绍最新版Delphi 12中的 Skia功能

sensor_WU 博客 4860

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Delphi Http Https 最好的解决方法(一)

Delphi http https 辅助工具 解决一切ssl问题

3729

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

delphi 访问https 接口

1.代码 function Tfrmmain.UploadData: Boolean; var IdHTTP: TIdHTTP; SSLIO: TIdSSLIOHandlerSocketOpenSSL; begin Result := False; IdHTTP := TIdHTTP.Create(nil); SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(nil); //https 协议 if Pos('https',FSynco

Listest的博客 4071

delphi TIDHTTPserver post数据与对应的接收方式

首先说客户端post数据,采用idhttp,有两种方式,一种是字符串,一种是流如下: 1.psot字符串的方式 var   s: string;   stm: TStringStream; //接收返回内容   send:TStringList;   //post的内容 begin   send:=TStringList.Create; send.Text:=‘要post的内容’;   //send.add(‘name=张三’); //也

yygyyygy1233的博客 6456

Delphi 历代版本部分对比(Delphi 12)

981
上一篇: APP 开发之使用 Frame 做界面如何简化代码
下一篇: Indy HTTP Server 使用 OpenSSL 3.0
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值