0

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

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

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

4

1 回答 1

0

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

于 2013-02-09T11:41:09.927 回答