web-dev-qa-db-ja.com

sendRedirect()はgetではなくpostメソッドとして機能できますか? -jsp / servlets

ユーザー名とパスワードを受け入れる単純なフォームがあります。ログインが有効な場合はページにリダイレクトし、そうでない場合は別のページにリダイレクトするには、ページのsendRedirect()メソッドを使用する必要があります。他のページは別のサーバーにあるため、sendRedirect()ではなくforward()を使用する必要があります。使用しているときに気づいた

_response.sendRedirect(response.encodeRedirectURL("FileName.jsp?paramName=" +value));
_

name = valueがURLに表示されているため、sendRedirect()GETメソッドを使用しています。安全上の理由から、これらの値をURLに表示したくないので、これは私には望ましくありません。

SendRedirect()を使用してこれらの値をPOSTする方法はありますか?メソッドPOSTを使用してフォームを作成しようとしましたが、必要な値は非表示になっていますが、まだ運がありません

どうしたらいいですか?ありがとう:)

15
Bernice

いいえ、それは不可能です。私が目にする唯一の(汚い)回避策は、非表示フォーム(メソッドPOSTを使用)とこのフォームを送信するJavaScriptスクリプトを含む内部ページに転送することです。

7
JB Nizet

これは少し古いですが、ここでこれを正常に実行しました:

response.setStatus(307); //this makes the redirection keep your requesting method as is.
response.addHeader("Location", "http://address.to/redirect");

HTTP 307ステータスコードの説明については、 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8 を参照してください。

9
Abdullah Battal

javaScriptを使用

$('#inset_form').html('<form action="FlowService" name="form" method="post" style="display:none;"><input type="hidden" name="idapp" value="' + idApp + '" /></form>');
        document.forms['form'].submit();
2
Daniel Kennedy

これを一度チェックしてください:

String url = "http://www.mysite/servlets/theServlet";
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
1
Suresh Atta

いいえ、HTTPリダイレクトはターゲットページに対して常にGETを使用します。

ただし、POSTデータはGETデータより安全ではありません。ユーザーはデータを改ざんすることができます。代わりにセッションに保存してください。

0
ThiefMaster

パラメータを指定せずにsendredirectを使用し、セッションスコープのサーブレットでそれらのパラメータを非表示にします。リダイレクトされたページでこれらのパラメータが必要な場合は、このサーブレットを介して使用します。

0
cubbuk