我正在使用TIdHTTPProxyServer来实现一个简单的HTTP代理,但我现在想要阻止某些连接,如果它们匹配某些URL。哪个事件和/或组件最适合完成该事件? Indy文档不太具有说明性。 :(Indy的TIdHTTPProxyServer:如何筛选请求?
感谢
我正在使用TIdHTTPProxyServer来实现一个简单的HTTP代理,但我现在想要阻止某些连接,如果它们匹配某些URL。哪个事件和/或组件最适合完成该事件? Indy文档不太具有说明性。 :(Indy的TIdHTTPProxyServer:如何筛选请求?
感谢
如可以使用OnHTTPBeforeCommand事件处理程序(之前的命令被发送到HTTP服务器,其触发)一个基本过滤器。
检查上下文参数属性,你会发现有用:
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’事件。
TIdHTTPProxyServer根本无法做到这一点,必须编辑它的代码 – 2011-01-12 09:04:36
@Worm问候是的,它可以,看到我的答案... – ComputerSaysNo 2011-01-12 09:18:07
@Worm和@Dorin:当然可以,看看我的答案。 ;) – jachguate 2011-01-12 17:46:52