使用代理HttpServlet请求的原始URL请求

时间:2013-02-08 23:29:39

标签: java servlets request servlet-filters

我有一个Apache代理,它将请求重定向到/ foo / bar到运行在/ foo上的Web应用程序。问题是我的过滤器链中有一个Servlet过滤器,要求请求仍然是/ foo / bar格式。这是一个我无法更改的身份验证过滤器,这导致在登录到/ foo而不是/ foo / bar后导致重定向错误。

在其他类似的线程之后,我尝试使用RequestDispatcher.forward和修改后的请求以及HttpServletResponse.sendRedirect来修改URL。第一种方法似乎跳过我的过滤器链的其余部分,第二种方法转到代理,然后将URL修改回/ foo。

有没有办法解决这个问题。理想情况下,我想要的只是身份验证过滤器获取/ foo / bar请求以及链的其余部分来获取/ foo请求。

1 个答案:

答案 0 :(得分:0)

看起来HttpServletRequestWrapper就是我想要的。只需要扩展它并提供getRequestURI和getRequestURL覆盖(更像是described here)。然后需要在我的身份验证过滤器之前和之后添加过滤器映射,以根据需要转换请求URL / URI。