3

我正在使用 TIdHTTPProxyServer 来实现一个简单的 HTTP 代理,但是如果它们与某些 URL 匹配,我现在想阻止一些连接。哪个事件和/或组件最适合实现这一目标?Indy 文档并不太详细。:(

谢谢!

4

2 回答 2

3

作为基本过滤器,您可以使用 OnHTTPBeforeCommand 事件处理程序(在命令发送到 HTTP 服务器之前触发)。

检查 Context 参数属性,你会发现很有用:

Context.Command
Context.OutboundClient.Host
Context.OutboundClient.Port
Context.Document
Context.Headers

此时我从未尝试过阻止 PassTrough,但我敢打赌,如果您确定存在阻止规则匹配,则只需在此时引发异常即可。

于 2011-01-12T17:46:17.350 回答
1

该组件有一个“OnConnect”事件,双击它并添加以下代码:

if AContext.Connection.Socket.Binding.PeerIP = '127.0.0.1' then
  AContext.Connection.Disconnect;

用您的过滤器替换 127.0.0.1,这只是一个“非常基本的示例”,同样适用于具有“OnConnect”事件的其他 Indy 服务器。

于 2011-01-12T09:16:42.467 回答