IndyのTidhttpproxyserver:リクエストをフィルタリングする方法は?

StackOverflow https://stackoverflow.com/questions/4666773

  •  10-10-2019
  •  | 
  •  

質問

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」イベントがある他のインディサーバーにも同じです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top