Я хочу установить код состояния 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, с использованием фильтров.
Фактический результат - я не могу заставить его работать.
Пожалуйста, помогите.