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 :)
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.
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.
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();
Découvrez cette fois:
String url = "http://www.mysite/servlets/theServlet";
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
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.
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.