IndyのTidhttpproxyserver:リクエストをフィルタリングする方法は?
質問
Tidhttpproxyserverを使用して簡単なHTTPプロキシを実装していますが、特定のURLと一致する場合は、いくつかの接続をブロックしたいと思います。それを達成するのに最適なイベントやコンポーネントはどれですか?インディドキュメンテーションはあまり説明的ではありません。 :(
ありがとう!
解決
基本フィルターとして、onhttpbeforecommandイベントハンドラー(コマンドがHTTPサーバーに送信される前に発射される)を使用できます。
コンテキストパラメーターのプロパティを検査すると、便利です。
Context.Command
Context.OutboundClient.Host
Context.OutboundClient.Port
Context.Document
Context.Headers
私はこの時点でパストローを止めようとしませんでしたが、ブロックルールの一致があると判断した場合、その時点で例外を提起するだけで、それを行うことができると思います。
他のヒント
コンポーネントには「OnConnect」イベントがあり、ダブルクリックしてこのコードを追加します。
if AContext.Connection.Socket.Binding.PeerIP = '127.0.0.1' then
AContext.Connection.Disconnect;
127.0.0.1をフィルターに置き換えます。これは「非常に基本的な例」にすぎません。「OnConnect」イベントがある他のインディサーバーにも同じです。
所属していません StackOverflow