0

/foo/bar へのリクエストを /foo で実行されている Web アプリにリダイレクトする Apache プロキシがあります。問題は、フィルタ チェーンにサーブレット フィルタがあり、リクエストが /foo/bar 形式のままである必要があることです。これは変更できない認証フィルターであり、これにより、/foo/bar ではなく /foo にログインした後に誤ったリダイレクトが発生します。

他の同様のスレッドに続いて、変更されたリクエストで RequestDispatcher.forward を使用し、URL を変更するために HttpServletResponse.sendRedirect を使用しようとしました。最初のアプローチはフィルター チェーンの残りをスキップするように見え、2 番目のアプローチはプロキシに行き、URL を /foo に変更します。

これを回避する方法はありますか。理想的には、認証フィルターのみが /foo/bar リクエストを取得し、チェーンの残りの部分が /foo リクエストを取得することです。

4

1 に答える 1

0

HttpServletRequestWrapper が探していたもののようです。これを拡張して getRequestURI と getRequestURL のオーバーライドを提供する必要がありました (ここで説明したように)。次に、必要に応じてリクエスト URL/URI を変換するために、認証フィルターの前後にフィルター マッピングを追加する必要がありました。

于 2013-02-09T11:41:09.927 に答える