как перехватить и изменить ответы HTTP на стороне сервера? - PullRequest
0 голосов
/ 05 июля 2010

Я работаю с клиент-серверным приложением, которое использует HTTP, и моя цель - добавить в него новые функции. Я могу расширить клиент, подключив свой собственный код к некоторым конкретным событиям, но, к сожалению, сервер не настраивается. И клиент, и сервер находятся в среде Windows.

Моя текущая проблема заключается в том, что при получении большого количества данных с сервера производительность ужасна: требуется время для ее передачи и время для ее обработки. Решение может заключаться в том, чтобы приложение на стороне сервера выполняло обработку и отправляло только результат (который намного меньше). Проблема в том, что нет встроенных функций для управления ответами с сервера перед их отправкой.

Я думал прослушать весь трафик на порту 80, определить соответствующие HTTP-ответы и отправить их в мое приложение, блокируя ответ (чтобы избежать отправки огромного объема данных, который не будет обрабатываться клиентом). Поскольку мне не хватает сетевых знаний, я немного растерялся, когда думал о том, как это сделать.

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

Обратный прокси-сервер, позволяющий запускать пользовательские сценарии по конкретным запросам или ответам, был бы идеальным, но мне интересно, если нет более простого способа выполнить этот перехват / отправку в другое место.

Какой самый простой и понятный метод для включения этого поведения?

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Я закончил создание простого обратного прокси-сервера для доступа к HTTP-серверу.Затем обратный прокси-сервер извлекает релевантную информацию из ответа сервера и отправляет ее на компонент обработки на стороне сервера и заменяет информацию, извлеченную из ответа, идентификатором, который клиент использует для запроса другого компонента для получения результатов обработки.
Статья на http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx была очень полезна для составления первого черновика обратного прокси.

0 голосов
/ 05 июля 2010

Хм .... слишком много вариантов. 2 идеи: настроить на всех клиентах прокси Http. Есть некоторые, которые позволяют вам манипулировать тем, что происходит в обоих направлениях (с помощью скриптов, плагинов). или же сделать сквозной проект, который прослушивает порт 80 и направляет необходимые данные на порт 8080 (где работает исходное серверное приложение)

вопрос в том, на каком программном обеспечении работает серверное приложение, а какие знания (dev) у тебя есть? ах. а что такое "огромные данные"? килобайт? мегабайт? для GigaByte

...