2011-01-12 103 views
3

我正在使用TIdHTTPProxyServer来实现一个简单的HTTP代理,但我现在想要阻止某些连接,如果它们匹配某些URL。哪个事件和/或组件最适合完成该事件? Indy文档不太具有说明性。 :(Indy的TIdHTTPProxyServer:如何筛选请求?

感谢

+0

TIdHTTPProxyServer根本无法做到这一点,必须编辑它的代码 – 2011-01-12 09:04:36

+0

@Worm问候是的,它可以,看到我的答案... – ComputerSaysNo 2011-01-12 09:18:07

+0

@Worm和@Dorin:当然可以,看看我的答案。 ;) – jachguate 2011-01-12 17:46:52

回答

3

如可以使用OnHTTPBeforeCommand事件处理程序(之前的命令被发送到HTTP服务器,其触发)一个基本过滤器。

检查上下文参数属性,你会发现有用:

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

我从来没有尝试过在这个时候停止PassTrough,但我敢打赌,你可以通过刚才的那点抛出一个异常,如果你决定这样做有一个阻止规则匹配。

1

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

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

您的筛选器替换127.0.0.1,这仅仅是一个“非常基本的例子”,同样适用于具有其它印服务器‘的onConnect’事件。