19

我有一个简单的表单,它接受用户名和密码。如果登录有效,我必须使用sendRedirect()页面重定向到一个页面的方法,如果不是,则重定向到另一个页面。我需要使用sendRedirect()而不是forward()因为其他页面位于另一台服务器中。我注意到在使用时

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

正在sendRedirect()使用该GET方法,因为 URL 中显示了 name=value。这对我来说是不可取的,因为出于安全原因,我不希望这些值显示在 URL 中。

有没有办法POST使用 sendRedirect() 来获取这些值?我试图用POST隐藏我需要的值但仍然没有运气的方法做一个表格

请问我能做什么?谢谢 :)

4

6 回答 6

14

不,这是不可能的。我看到的唯一(肮脏)解决方法是转发到包含隐藏表单(使用 POST 方法)和提交此表单的 JavaScript 脚本的内部页面。

于 2012-12-26T10:21:11.623 回答
10

这有点旧,但在这里我成功地运行了这个:

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

于 2014-04-17T08:57:20.427 回答
2

使用 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();
于 2014-07-01T17:24:27.510 回答
0

不,HTTP 重定向将始终对目标页面使用 GET。

但是,无论如何,POST 数据并不比 GET 数据安全得多。用户仍然可以篡改它们。而是将它们存储在会话中。

于 2012-12-26T10:19:41.673 回答
0

看看这个:

String url = "http://www.mysite/servlets/theServlet";
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
于 2012-12-26T10:22:21.997 回答
0

在不提供任何参数的情况下使用 sendredirect,并将这些参数隐藏在会话范围的 servlet 中,如果您在重定向页面中需要这些参数,请通过此 servlet 使用它们。

于 2012-12-26T10:25:19.513 回答