2013-02-08 109 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。