Есть ли возможность манипулировать необработанным http-потоком изнутри apache tomcat? - PullRequest
1 голос
/ 01 ноября 2010

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

Приложения отправляют неправильный тег (с ошибкой), но они не могут изменить это поведение.

Итак, мой вопрос:

Есть ли возможность с фильтром или составителем списков получить необработанный http-поток, что-то изменить и вернуть в цепочку.

Спасибо, Алекс

1 Ответ

0 голосов
/ 02 ноября 2010

Я предполагаю, что вы хотите изменить входящее тело HTTP-запроса.Нет простого способа сделать это.Я не знаю ни одного Servlet API, который позволил бы вам делать это «официально».

«Неофициально» вы можете использовать магию отражения на org.apache.catalina.connector.Request.Если вы посмотрите на этот объект, вы увидите, что оба метода, которые возвращают фактическое тело (getReader() и getInputStream()), создают потоки поверх входного буфера, экземпляр org.apache.catalina.connector.InputBuffer.Вам придется манипулировать этим буфером, чтобы он возвращал испорченные данные.

Излишне говорить, что это очень изменчивый и опасный хак.Нет никаких гарантий, что это будет работать на следующей версии Tomcat (даже незначительной) и будет практически недоступно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...