Java 对代理HttpServlet请求使用原始URL请求

Java 对代理HttpServlet请求使用原始URL请求,java,servlets,request,servlet-filters,Java,Servlets,Request,Servlet Filters,我有一个Apache代理,它将对/foo/bar的请求重定向到运行在/foo上的web应用程序。问题是我的过滤器链中有一个Servlet过滤器,它要求请求仍然是/foo/bar格式。这是一个身份验证筛选器,我无法更改,这会导致登录到/foo而不是/foo/bar后重定向错误 在其他类似的线程之后,我尝试使用RequestDispatcher.forward和修改的请求以及HttpServletResponse.sendRedirect来修改URL。第一种方法似乎跳过了我的过滤器链的其余部分,第二

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

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


这有什么办法吗。理想情况下,我只希望身份验证过滤器获得/foo/bar请求,而链的其余部分获得/foo请求。

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