web-dev-qa-db-de.com

Kann sendRedirect () anstelle von get als Post-Methode fungieren? - Jsp/Servlets

Ich habe ein einfaches Formular, das einen Benutzernamen und ein Passwort akzeptiert. Ich muss die sendRedirect()-Methode verwenden, damit die Seite zu einer Seite umgeleitet wird, wenn das Login gültig ist, und zu einer anderen, falls nicht. Ich muss sendRedirect() und nicht forward() verwenden, da sich die anderen Seiten auf einem anderen Server befinden. Ich habe das bei der Verwendung bemerkt

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

sendRedirect() verwendet die Methode GET, da name = value in der URL angezeigt wird. Dies ist für mich nicht wünschenswert, da diese Werte aus Sicherheitsgründen nicht in der URL angezeigt werden sollen. 

Gibt es eine Möglichkeit, diese Werte mit sendRedirect () zu POST zu bringen? Ich habe versucht, ein Formular mit der Methode POST zu erstellen, die die benötigten Werte verbirgt, aber immer noch kein Glück

Was kann ich bitte machen? Vielen Dank :)

12
Bernice

Nein, es ist nicht möglich. Die einzige (schmutzige) Problemumgehung, die ich sehe, ist das Weiterleiten an eine interne Seite, die ein verstecktes Formular (mit der Methode POST) und ein JavaScript-Skript enthält, das dieses Formular übergibt.

7
JB Nizet

Dies ist ein bisschen alt, aber hier habe ich erfolgreich Folgendes ausgeführt:

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

Unter http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8 finden Sie Erläuterungen zum HTTP 307-Statuscode.

9
Abdullah Battal

benutze 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

Schauen Sie sich das einmal an:

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

Nein, eine HTTP-Weiterleitung verwendet immer GET für die Zielseite.

POST -Daten sind jedoch ohnehin nicht viel sicherer als GET-Daten. Der Benutzer kann sie weiterhin manipulieren. Speichern Sie sie stattdessen in der Sitzung.

0
ThiefMaster

Verwenden Sie sendredirect, ohne Parameter anzugeben, und blenden Sie diese Parameter in einem Servlet mit Sitzungsbereich aus. Wenn Sie diese Parameter auf der umgeleiteten Seite benötigen, verwenden Sie sie über dieses Servlet.

0
cubbuk