如果状态码为403

时间:2019-03-27 05:38:10

标签: java httpresponse servlet-filters

如果状态码最初将是403,我想使用Servlet过滤器在传出响应上设置状态码404。这主要是因为我想防止任何攻击者知道资源的存在。 / p>

我知道这不能通过简单的HttpServletResponse来完成-在if(status==403)之后不更改chain.dofilter()条件内的响应代码,因为响应已经提交,因此什么也不做。

我尝试了此处答案中给出的代码-Response is committing and doFilter chain is broken

但是它给了我以下错误:-

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());

预期结果-如果要使用过滤器将状态代码最初更改为403,我想将其更改为404。

实际结果-我无法使用它。

请帮助。

0 个答案:

没有答案