Indy的TIdHTTPProxyServer:如何过滤请求?

时间:2011-01-12 08:48:21

标签: delphi indy10

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

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

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

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