Как связать запрос в расширении ISAPI с ответом в фильтре ISAPI? - PullRequest
0 голосов
/ 07 августа 2011

Я создаю своего рода http-сниффер для IIS6, для этого я использую как фильтр ISAPI, так и расширение ISAPI. Расширение - прочитать запрос. Фильтр - для чтения ответа.

Причина, по которой я использую расширение, заключается в том, что я не хочу заставлять пользователя переходить в режим совместимости IIS5 и поэтому не могу подписаться на SF_NOTIFY_READ_RAW_DATA.

Дело в том, что когда я читаю ответ, я хочу связать его с запросом, поэтому мне нужно дать уникальный идентификатор для запроса и использовать его при чтении ответа.

Я прочитал, что раньше была возможность вызвать ServerSupportFunction с SF_REQ_GET_CONNID, но это не поддерживается в IIS6.

Также я прочитал, что возможное решение - добавить заголовок клиента, а затем удалить его - это, вероятно, сработает, но выглядит менее элегантно, чем я надеялся реализовать.

Есть ли способ получить идентификатор фильтра (connID в EXTENSION_CONTROL_BLOCK) в фильтре?

ценю ваш ответ, Sagiv

1 Ответ

1 голос
/ 01 апреля 2012

У меня была такая же проблема несколько месяцев назад.

Я сделал следующее, чтобы решить проблему:

  1. В HttpFilterProc (фильтр ISAPI) я искал уведомление SF_NOTIFY_PREPROC_HEADERS.
  2. Затем я вставил свой собственный заголовок с GUID в запрос.
  3. На HttpExtensionProc (расширение ISAPI) я прочитал свой заголовок и извлек GUID.
  4. Затем я прочитал запроссодержимого и связал его с GUID.
  5. В OnSendRawData (фильтр ISAPI) я прочитал (ответный) ответный контент и снова связал его с GUID.

Таким образом, у меня есть обасодержимое запроса (из расширения) и содержимое ответа (из фильтра) связаны между собой!

...