我有单独的客户端应用程序,它位于ReactJs和NodeJS(Express服务器)中,以及在tomcat中运行的Java应用程序中的Web服务。
我的查询是在进行Web服务调用方面更好的方法。
我知道直接调用Web服务的一个问题是跨域策略,可以通过在Java服务器中设置配置来处理。
除了它应该是更好的方法。
答案 0 :(得分:1)
根据我的经验,最好使用来自UI应用程序的直接调用并避免使用中间服务器。
直接这样做的原因是我们的服务器最终受到了很多基于IP地址的限制,并且所有请求都来自中间服务器(nodeJS服务器),因此终端服务器的DDOS保护必须有一些例外(我们的节点服务器可以在具有动态IP地址的ACS上,因此可能很难管理。
此外,如果您想传递和跟踪最终用户的IP地址,您需要管理节点服务器上的标头(以确保您按原始请求传递它)。
如果来自React应用程序的调用只是在java服务器上设置CORS,那么管理这种情况会更简单。
此外,它更容易在UI应用程序上直接调试它,因此您只会在一个地方观看响应日志。您可以通过其他方式调试节点服务器和UI应用程序。
希望这有点帮助。
答案 1 :(得分:0)
最好的方式IMO是专门为所有Java Web服务在Node js中创建路由器并充当代理。
假设您的网址格式与http://domain/java-ws/api
类似,则所有这些请求都将路由到您的Java服务。
如果您有Apache服务器将请求定向到您的节点JS,那么使用代理模块配置url模式代理。
浏览器因某种原因阻止了CORS请求。您可以通过在服务器上设置内容来逃避。