我正在使用 TIdHTTPProxyServer 来实现一个简单的 HTTP 代理,但是如果它们与某些 URL 匹配,我现在想阻止一些连接。哪个事件和/或组件最适合实现这一目标?Indy 文档并不太详细。:(
谢谢!
作为基本过滤器,您可以使用 OnHTTPBeforeCommand 事件处理程序(在命令发送到 HTTP 服务器之前触发)。
检查 Context 参数属性,你会发现很有用:
Context.Command
Context.OutboundClient.Host
Context.OutboundClient.Port
Context.Document
Context.Headers
此时我从未尝试过阻止 PassTrough,但我敢打赌,如果您确定存在阻止规则匹配,则只需在此时引发异常即可。
该组件有一个“OnConnect”事件,双击它并添加以下代码:
if AContext.Connection.Socket.Binding.PeerIP = '127.0.0.1' then
AContext.Connection.Disconnect;
用您的过滤器替换 127.0.0.1,这只是一个“非常基本的示例”,同样适用于具有“OnConnect”事件的其他 Indy 服务器。