Установите код состояния для ответа на 404 с помощью фильтра, если код состояния 403 - PullRequest
0 голосов
/ 27 марта 2019

Я хочу установить код состояния 404 для исходящего ответа с использованием Servlet Filter, если код состояния изначально должен был быть 403. Это в основном потому, что я хочу, чтобы любой злоумышленник не знал о существовании ресурса.

Я знаю, что это не может быть достигнуто простым HttpServletResponse - изменение кода ответа внутри условия if(status==403) после chain.dofilter() ничего не делает, поскольку ответ уже был зафиксирован.

Я попробовал код, указанныйв ответе здесь - Ответ фиксируется, и цепочка doFilter разорвана

Но это дает мне следующую ошибку: -

java.io.IOException: UT010029: Stream is closed
at io.undertow.servlet.spec.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:133)
at io.undertow.servlet.spec.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:125)
at CODE.filter.ResourceNotFoundFilter.doFilter(ResourceNotFoundFilter.java:76)

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

Ошибка, сгенерированная выше, в основном из-за этой строки в коде.Это 76-я строка в моем файле.

response.getOutputStream().write(wrapper.getWrapperBytes());

Ожидаемый результат - я хочу изменить код состояния на 404, если первоначально он должен был быть 403, с использованием фильтров.

Фактический результат - я не могу заставить его работать.

Пожалуйста, помогите.

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