如何将 Spring 请求重定向到另一个应用程序?

Posted

技术标签:

【中文标题】如何将 Spring 请求重定向到另一个应用程序?【英文标题】:How to redirect Spring request to another application? 【发布时间】:2016-08-19 19:02:28 【问题描述】:

我有一个应用程序可以处理POST 请求。要请求,我需要定义一些标题、边界和连字符。换句话说,我需要制作完整的请求。我使用HttpURLConnection 成功地做到了这一点。 现在,我想从我的 Spring 应用程序中请求该应用程序。

说, 我有三个应用程序 A(传感器)、B(弹簧)和 C(服务器)。

在这种情况下,B 将充当桥梁,接收来自 A 的请求,对其进行身份验证并将其发送给 C。

我不想在 Spring 中再次制作相同的请求,它只是将请求重定向到服务器。 Spring中是否有任何机制?

【问题讨论】:

只是想知道 forward 前缀在这里是否是一个不错的选择 - docs.spring.io/spring/docs/3.0.x/spring-framework-reference/… 查看更多来源 在这里发现了一个类似的问题 - 这有帮助吗 - ***.com/questions/17955777/… 是的,这有点像forward,但在问题中没有讨论。forward 将相同的请求转发到内部资源,但我想将它转发到有问题的外部资源到 C 是在不同地方(地理上)的不同应用程序。 【参考方案1】:

重定向有3种机制:

转发:您将请求(和关联的响应)传递给在同一上下文中的另一个 servlet,这意味着在同一 Web 应用程序中 - AFAIK 这不是您需要的 redirect:你给客户端(浏览器)一个位置(一个URL),它应该重新发送一个请求。您可以重定向到任何 URL,但它假设重定向的应用程序将直接接受客户端请求 - 正如您所说的 B 充当桥梁,我认为它仍然不是您所需要的 代理:网桥向下一跳发送一个新请求,并将响应重新发送给它自己的客户端。由于原始请求和新请求之间没有耦合,如果您在同一台服务器上,您甚至可以使用不同的协议,例如管道或 Unix 套接字。或者您可以使用在 html 请求和响应中易于生成和解码的 Json。在 Windows 世界中,您甚至可以使用 DCOM 或 .NET 直接在远程服务器上执行方法。但即使它被那些工具隐藏了,你仍然需要在桥上构建一个新请求并在服务器上对其进行解码(同一服务器上的 DCOM/.NET 除外)

【讨论】:

我不想像你说的那样再次构建请求,以防proxy。我有转发和重定向的想法,但不知道代理。我想我必须调查一下,如果它有助于不再构建请求。 我也尝试过弹簧重定向和转发。但是重定向不会更改请求的客户端 IP 地址,所以我认为在这种情况下它是无用的。我也无法转发到另一个网址。

以上是关于如何将 Spring 请求重定向到另一个应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

将 POST 请求从一个 REST API 转发/重定向到另一个

如何将从 Ajax 请求收到的响应重定向到另一个 html 页面

如何将一个域重定向到另一个域

如何在 Spring 中重定向到另一台主机

apache永久重定向所有请求到另一个端口

Fiddler:如何将路径从一个域重定向到另一个域