2013-02-08 112 views
0

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

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

有没有办法解决这个问题。理想情况下,我只想用身份验证过滤器来获得/ foo/bar请求,而其余链获得/ foo请求。

回答

0

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