【问题标题】:React front end connected to node.js backend with only 1 port openReact 前端连接到 node.js 后端,仅打开 1 个端口
【发布时间】:2020-05-03 19:41:00
【问题描述】:

我在工作中遇到了一个很大的问题,需要一些帮助。基本上我有一个反应前端和一个 node.js 后端来连接到数据库。问题是我为其构建的公司只会为网页打开 1 个端口(443)。而且由于反应是在客户端生成的,所以我不能使用 localhost url 来调用后端以从数据库中获取信息。他们说如果我们将其设为 HTTPS,他们可能会打开另一个端口。因此,我尝试使用带有自分配 ssl 证书的 express 和 https,这对我有用。在客户端端,网页的 http 调用不会到达 express 服务器。

我也开始用 webpack 和 express 构建这个,所以服务器会渲染 react 代码。这应该可以工作,但我怀疑 webpack 有问题(过去没有很好的经验).... 无论如何,你们有什么可以想到的,可以让我的客户端渲染的反应应用程序连接到数据库?其他公司如何处理这样的事情?真的任何帮助都会很棒。我因此承受了很大的压力。

如果您认为您有任何信息可以帮助我指明正确的方向,我将不胜感激!

【问题讨论】:

    标签: node.js reactjs port


    【解决方案1】:

    我认为您不需要打开任何其他端口来访问数据库,因为访问它的代码将在服务器端运行。我的意思是,是的,数据库端口需要在本地打开,但不需要对 Internet 开放。

    换句话说,您需要让您的反应代码访问服务器上的 API(端口 443 上的 https 端点)才能检索数据。您使用 Express 的解决方案应该可以工作。我猜你有一个节点服务器正在监听端口 443,并且你正在使用 Express 作为框架服务器端。正是这个服务器端代码应该访问数据库并将数据提供给您的 React 客户端代码发出的 https 请求。您的浏览器可能不喜欢您的自签名证书,您可能需要告诉它信任该证书。

    更新:

    如果您想阻止来自服务器的所有端口(端口 443 除外),您可以使用防火墙来实现此目的,并使端口看起来不活动,除了来自 localhost 的请求,服务器本身。如果这不是一个选项,您还可以选择使用套接字路径而不是 TCP 端口连接到数据库。

    【讨论】:

    • 是的,API 工作正常。它让网页到达那个终点,这就是问题所在。由于它呈现客户端,我不能使用本地主机,因为他们没有打开另一个端口,我不能通过服务器的 ip 或 url 调用它
    • @JesseBurnley 我不确定我是否理解您的网页无法访问端点的原因...请您提供更多详细信息吗?
    • 网页在一个端口上提供服务,我必须使用节点 js 程序来访问数据库。由于这个nodejs api同时运行,它需要在另一个端口上。但是没有其他端口打开,访问前端的人无法实际连接该 api。
    • @JesseBurnley 您在服务器上需要的是一个防火墙,它可以使来自本地主机但不能来自互联网的连接可以访问数据库端口。我认为您的客户需要了解这一点。
    • @JesseBurnley 您使用的是什么类型的数据库?也许您可以使用套接字连接来访问它。
    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2021-04-26
    • 2020-12-03
    • 1970-01-01
    • 2019-11-14
    • 2016-11-04
    相关资源
    最近更新 更多