web-dev-qa-db-fra.com

SendRedirect () peut-il agir comme une méthode post au lieu de get? - jsp/servlets

J'ai un formulaire simple qui accepte un nom d'utilisateur et un mot de passe. Je dois utiliser la méthode sendRedirect() pour que la page redirige vers une page si la connexion est valide et vers une autre si ce n'est pas le cas. Je dois utiliser sendRedirect() et non forward() car les autres pages se trouvent sur un autre serveur. J'ai remarqué que lors de l'utilisation

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

la sendRedirect() utilise la méthode GET puisque name = value est affiché dans l'URL. Ce n'est pas souhaitable pour moi car je ne veux pas que ces valeurs apparaissent dans l'URL pour des raisons de sécurité. 

Existe-t-il un moyen de POST ces valeurs en utilisant sendRedirect ()? J'ai essayé de faire un formulaire avec la méthode POST qui cache les valeurs dont j'ai besoin mais toujours pas de chance

Que puis-je faire s'il vous plaît? Merci :)

12
Bernice

Non, ce n'est pas possible La seule solution (sale) que je vois est de transférer vers une page interne contenant un formulaire masqué (avec la méthode POST) et un script JavaScript soumettant ce formulaire.

7
JB Nizet

C'est un peu vieux, mais ici, j'ai couru avec succès ceci:

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

Voir http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8 pour une explication du code d'état HTTP 307.

9
Abdullah Battal

utiliser 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

Découvrez cette fois:

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

Non, une redirection HTTP utilisera toujours GET pour la page cible.

Cependant, les données POST ne sont pas beaucoup plus sûres que les données GET. L'utilisateur peut toujours les altérer. Stockez-les dans la session à la place.

0
ThiefMaster

Utilisez sendredirect sans fournir de paramètre et masquez-les dans un servlet de session. Si vous avez besoin de ces paramètres dans la page redirigée, utilisez-les via ce servlet.

0
cubbuk