从客户端应用程序(ReactJs+NodeJs)向Java Web服务发出请求



我有单独的客户端应用程序,它位于ReactJS和NodeJS(Express server(中,Web服务在Tomcat中运行的Java应用程序中。

我的查询是,就进行 Web 服务调用而言,哪种方法更好。

  1. 一种是从ReactJS进行直接Web服务调用并获取数据。
  2. 另一个是在Express服务器中调用Web服务。来自客户端浏览器的请求将转到 Express,Express 将调用所有 Web 服务。

我知道直接调用 Web 服务的一个问题是跨域策略,可以通过在 Java 服务器中设置配置来处理。

除此之外,还有什么更好的方法。

根据我的经验,使用来自 UI 应用程序的直接调用并避免中间服务器最终会更好。

直接这样做的原因是我们的服务器最终有很多基于 IP 地址的限制,并且所有请求都来自中间服务器(nodeJS 服务器(,因此终端服务器的 DDOS 保护必须有一些例外(我们的节点服务器可能在具有动态 IP 地址的 ACS 上,因此可能难以管理(。

此外,如果要传递和跟踪最终用户 IP 地址,则需要管理 Node 服务器上的标头(以确保在原始请求中传递它(。

如果调用来自 React 应用程序并简单地在 Java 服务器上设置 CORS,那么管理这种情况会更简单。

此外,直接在UI应用程序上调试它也更容易,因此您将仅在一个地方查看响应日志。其他方法,您最终可能会调试节点服务器和UI应用程序。

希望这有所帮助。

IMO的最佳方法是在Node js中专门为所有Java Web服务创建一个路由器,并充当代理。

假设如果您的 url 模式类似于http://domain/java-ws/api那么所有这些请求都将路由到您的 Java 服务。

如果您有 Apache 服务器将请求定向到您的节点 JS,请使用代理模块配置 url 模式代理。

浏览器阻止 CORS 请求是有原因的。您可以通过在服务器上设置内容来逃脱。

相关内容

最新更新