0

別のサーバー上のWebアプリケーションにリダイレクトしているJavaサーブレットがあります。

クエリ文字列パラメータを非表示にして、クライアントにアドレスバーに表示されないようにする方法があるかどうか疑問に思いました。

response.sendRedirect("http://www.mywebapp.com/login.html?parameter1=value1&parameter2=value2");

sendRedirectをページへのPOSTに強制し、クエリ文字列を非表示にする方法はありますか?

編集:ユースケース。

  • ユーザーはhttp://www.mywebapp.comにアクセスします
  • それらは自動的にサーブレットフィルターにリダイレクトされます
  • サーブレットは、SAMLを使用してIDプロバイダーへのSSOを処理します
  • SAML応答を受信したら、認証されたユーザーをmywebapp.comにリダイレクトします。
  • いくつかのパラメーターをwebappに戻したいです。SAML応答からのパラメーター。しかし、私はユーザーにそれらをURLで見られたくありません

明らかに、sendRedirect()は私が望むものではありません。これを処理するための最良の方法は何でしょうか?

4

4 に答える 4

1

いいえ、このシナリオではPOSTを使用できません。これを呼び出すとき、sendRedirect()これはクライアントに送り返すものです。

HTTP/1.1 302 Found
Location: http://www.mywebapp.com/login.html?parameter1=value1&parameter2=value2

ブラウザはこれを解釈し、ユーザーにその場所を示します。

何かが私に(おそらくlogin.html名前と2つのパラメータ)あなたがいくつかのウェブサイトでユーザーに自動的にログインしたいということを教えてくれます)。このようにしないでください。ユーザー名/パスワードの送信(GETパラメーターとPOST内の両方を使用)は実際には安全ではありません。

ユースケースについてあまり知らなくてもhttp://www.mywebapp.com/login.html、サーブレットから呼び出し、応答を解析してユーザーに返すのがおそらく最善の解決策です(したがって、ユーザーがブラウザーに実際に表示することはありませんmywebapp

于 2012-12-05T18:59:05.313 に答える
0

サーブレット(HttpConnection)から他のサーバーに接続し、返されたデータをコピーすることができます。ユーザーにはサーバーのみが表示されます。

別の方法は、ロード後にPOSTフォームを自動的に送信するHTMLページを返すことです。ユーザーはJSを許可する必要があります。

于 2012-12-05T18:59:27.093 に答える
0

サーバー側からリクエストを転送し、最後に他のページにリダイレクトすることができます

于 2012-12-05T18:59:49.830 に答える
0

内部クラスの概念を使用してJavaまたはAndroidプロジェクトから文字列を非表示にする方法を見つけました。プロガードを使用してそれらを非表示にし、クラスを非表示にするのがサーバー側の処理です。

于 2020-02-25T21:09:36.867 に答える