0

IIS6 用の一種の http スニファーを構築しています。そのために、ISAPI フィルターと ISAPI 拡張機能の両方を使用しています。拡張子 - リクエストを読み取ります。フィルター - 応答を読み取ります。

拡張機能を使用している理由は、ユーザーに IIS5 互換モードへの変更を強制したくないため、SF_NOTIFY_READ_RAW_DATA をサブスクライブできないためです。

問題は、応答を読み取るときにそれを要求にリンクしたいので、要求に一意の識別子を与え、応答を読み取るときにそれを使用する必要があるということです。

SF_REQ_GET_CONNID で ServerSupportFunction を呼び出すオプションがあったことを読みましたが、IIS6 ではサポートされていません。

また、可能な解決策は顧客ヘッダーを追加してから削除することであると読みました-それはおそらくうまくいくでしょうが、私が実装したいと思っていたよりもエレガントではないようです.

フィルターで接続 ID (EXTENSION_CONTROL_BLOCK の connID) を取得する方法はありますか?

あなたの応答に感謝します、Sagiv

4

1 に答える 1

1

私は数ヶ月前に同じ問題を抱えていました。

問題を解決するために次のことを行いました。

  1. HttpFilterProc (ISAPI フィルター) で、通知 SF_NOTIFY_PREPROC_HEADERS を探しました。
  2. 次に、独自のヘッダーに GUID をリクエストに挿入しました。
  3. HttpExtensionProc (ISAPI 拡張) で、ヘッダーを読み取り、GUID を抽出します。
  4. 次に、リクエストの内容を読み取り、GUID に関連付けました。
  5. OnSendRawData (ISAPI フィルター) で、(チャンクされた) 応答コンテンツを読み取り、再び GUID に接続します。

このようにして、(拡張機能からの) リクエスト コンテンツと (フィルタからの) レスポンス コンテンツの両方がリンクされます。

于 2012-04-01T11:45:14.027 に答える