2

私はサーブレットが初めてで、次のことをしたいと思っています。

私の代わりにフィルターを設定しました:

void doFilter( ServletRequest request, 
               ServletResponse response, 
               FilterChain chain ) throws IOException, ServletException 
{
}

これらのフィルターは、特定の URL がパターンと一致したときに呼び出されます。

このメソッドの中で、私はこれをしたい:

  1. 私が知っている認証キーを入力して、受信requestヘッダーを変更します

  2. そして、その認証ヘッダーを配置して、その特定の要求の応答がの結果になるように、request他のURLにリダイレクトしますwww.test.comwww.test.com

そうすることは可能ですか?

私はこれらを試しました:

response.setHeader("WWW-Authenticate","Basic MyKey")
response.setHeader("Location","www.google.com")

でもこの後どうすればいいの?ページを google.com にリダイレクトするにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

1

それは(幸いなことに)不可能です。Web クライアントが任意のドメインに対して発行する HTTP 要求のヘッダーを Web サーバーとして制御できるとしたら、それは重大なセキュリティ違反になります。とりわけ、フィッシングが非常に簡単になります。

必要なことを達成するための最善の策は、プロキシとして機能することです。eg または Apache HTTPComponents Client を使用してプログラムで HTTP 要求を自分で作成URLConnectionして起動し、その応答をサーブレット応答にパイプします。ただし、ブラウザのアドレス バーの URL は Web サーバーの URL のままであることに注意してください。

を使用したキックオフの例を次に示しURLConnectionます。

URLConnection connection = new URL("http://other.com").openConnection();
// Set headers if necessary via setRequestProperty().

InputStream input = connection.getInputStream();
OutputStream output = response.getOutputStream();
// Copy response body from input to output.
于 2013-06-25T01:50:37.713 に答える