Сервер Indy's TIdHTTPProxyServer:Как фильтровать запросы?

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

  •  10-10-2019
  •  | 
  •  

Вопрос

Я использую TIdHTTPProxyServer для реализации простого HTTP-прокси, но теперь я хотел бы заблокировать некоторые соединения, если они соответствуют определенным URL-адресам.Какое событие и / или компонент лучше всего подходят для достижения этой цели?Документация Indy не слишком понятна.:(

Спасибо!

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

Решение

В качестве базового фильтра вы можете использовать обработчик событий 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 на ваш фильтр, это всего лишь «чрезвычайно базовый пример», то же самое относится и к другим серверам Indy, которые имеют событие «OnConnect».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top