Определение длины ответа из фильтра ISAPI

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Я работаю над фильтром ISAPI, чтобы исключить определенное содержимое из ответов. Мне нужно собрать все тело ответа перед выполнением обработки, так как содержимое, которое я собираю, может перекрывать буферы отправки.

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

Одним из подходов будет использование длины контента. Это потребовало бы, чтобы я обнаружил конец заголовков. Это также потребовало бы предположения, что заголовок длины содержимого является правильным (это гарантировано?). Поскольку HTTP даже не требует заголовка длины содержимого, я даже не уверен, что он всегда будет там. Кажется, должен быть более легкий путь.

Я предполагаю, что ответ не разделен на части, поэтому я не обрабатываю разделение на части перед тем, как изменить ответ. Кроме того, при внесении изменений в тело ответа размер тела ответа не изменится, поэтому мне не нужно возвращаться и обновлять длину содержимого.

Это было полезно?

Решение

В итоге я нашел несколько хороших обсуждений через Google.

Это сообщение отвечает на мои вопросы, а также поднимает вопросы, которые придется решать более сложному фильтру:

scroll top