Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从客户端应用程序(ReactJs+;NodeJs)向Java web服务发出请求_Java_Node.js_Web Services_Reactjs_Express - Fatal编程技术网

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

从客户端应用程序(ReactJs+;NodeJs)向Java web服务发出请求,java,node.js,web-services,reactjs,express,Java,Node.js,Web Services,Reactjs,Express,我在ReactJs和NodeJS(Express server)中为客户端提供了单独的应用程序,在tomcat中运行的Java应用程序中提供了Web服务 我的问题是,在进行web服务调用方面,哪种方法更好 一个是从ReactJS直接调用web服务并获取数据 另一个是在Express server中调用web服务。来自客户端浏览器的请求将转到Express,Express将调用所有web服务 我知道直接调用web服务的一个问题是跨域策略,可以通过在Java服务器中设置配置来处理 除此之外,还有什么

我在ReactJs和NodeJS(Express server)中为客户端提供了单独的应用程序,在tomcat中运行的Java应用程序中提供了Web服务

我的问题是,在进行web服务调用方面,哪种方法更好

  • 一个是从ReactJS直接调用web服务并获取数据
  • 另一个是在Express server中调用web服务。来自客户端浏览器的请求将转到Express,Express将调用所有web服务
  • 我知道直接调用web服务的一个问题是跨域策略,可以通过在Java服务器中设置配置来处理


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

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

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

    另外,若要传递和跟踪最终用户的IP地址,则需要管理节点服务器上的头(以确保传递的是原始请求中的头)

    若调用来自React应用程序,并且只需在java服务器上设置CORS,那个么管理这种情况就更简单了

    而且,它更容易在UI应用程序上直接调试,所以您只能在一个地方查看响应日志。另一种方法是调试节点服务器和UI应用程序


    希望这能有所帮助。

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

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

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

    浏览器出于某种原因阻止CORS请求。你可以通过在你的服务器上设置一些东西来逃避