【问题标题】:Hiding Parameters in url while sending url through response.sendRedirect method通过 response.sendRedirect 方法发送 url 时在 url 中隐藏参数
【发布时间】:2015-05-20 14:36:08
【问题描述】:

我正在通过response.sendRedirect() 方法将 url 发送到另一台服务器,它正在为我生成 pdf。我正在传递所有参数,但其中一个参数数据超过了长度,因为浏览器无法处理它并且请求被阻止。

我知道通过 Post 方法我们可以隐藏 url 参数,response.sendRedirect() 使用 GET 方法。有没有像sendRedirect 这样的POST 方法,我们可以通过它直接通过servlet 访问另一个服务器url?提前致谢。

【问题讨论】:

  • 使用 RequestDispatcher 转发您的请求 RequestDispatcher rd = request.getRequestDispatcher("your server controller");
  • @CHERUKURI 我认为这用于请求同一系统上的控制器,而不是其他系统。因为我必须将请求发送到不同的服务器。
  • 不,你不能。一种可能的技巧是转发到您将发布数据放入表单的页面,并在页面加载后立即提交表单

标签: java jsp servlets post get


【解决方案1】:

使用response.sendRedirect(newUrl),您可以在响应标头中发回带有新Location=newUrl 的HTTP 状态302。因此,您不能强制浏览器使用 POST 而不是 GET 方法。

您可以做的是从您的服务器代码中使用一个 pdf 文件并将其返回给客户端,从而对客户端隐藏实际的目标位置。然后,如果新位置接受,您可以使用您想要的方法和参数构建任何请求。

例如,请参阅本教程如何从您的 servlet http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/ 向另一台服务器发出请求

【讨论】:

  • 我只有在客户端服务器上有这个 PDF 生成代码。我们正在做的是从我们的数据库中获取参数并传递 .但正如我所说,由于浏览器无法处理,其中一个参数变得很大。
  • 您的 Servlet 可以使用 HttpURLConnection 对象来发出 post 请求。获得数据后,您可以将其流式传输到您的客户端。
  • 让我清除它。您从客户端浏览器获取请求,从请求中读取所需参数,从数据库中获取某些内容,构建一个新 URL(超出某些大小限制)并使用 response.sendRedirect(newUrl) 将其发送回客户端。对吗?
  • @olexd 。你几乎是对的......我们只是从数据库中获取变量,构建一个新的 URL(超过了一些大小限制)并使用 response.sendRedirect(newUrl) 将其发送回客户端。
  • 因此,与其将 URL 发送回浏览器,不如直接在您的 servlet 代码中通过该 URL 检索 pdf 数据并将其内容发送回浏览器。因此,浏览器从您的 servlet 中返回一个完整的 PDF 文件,而不是检索此 pdf 的 URL。这种方法的好处 - 您可以根据需要/可以对 PDF 服务器的请求进行操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多