【问题标题】:heroku send request from a front-end app to a back-end oneheroku 从前端应用程序向后端应用程序发送请求
【发布时间】:2020-07-05 11:41:14
【问题描述】:

我在 heroku 上创建了一个 hapi.js 后端应用程序。经过一堆问题后一切正常。现在,我想用 react.js 创建一个前端应用程序,但是我有一个问题:

const server = Hapi.server({
        port: process.env.PORT,
        host: '0.0.0.0'
    });

要定义后端的端口,我有环境变量,所以我真的不知道它的值。那么react 应用如何知道连接的服务器的正确端口呢?

【问题讨论】:

  • 您不必在 React 应用程序中提供端口即可连接到后端。只需提供 heroku 的应用程序 url。 Heroku 会在 80 和 443 端口自动公开您的服务,并将代理映射到自己后面。
  • 您的后端应用 URL 必须类似于 your-app-name.herokuapp.com

标签: node.js reactjs heroku client-server hapi


【解决方案1】:

您实际上不需要知道端口号。您可以使用默认端口,HTTP 为 80,HTTPS 为 443。

根据 heroku 文档:

与 Heroku 的合同是让进程绑定到端口以服务请求。然后 Heroku 的路由器负责将 HTTP 请求引导到正确端口上的进程。

这意味着 heroku 自己监听 HTTP 的 80 端口和 HTTPS 的 443 端口。

参考资料:

  1. https://devcenter.heroku.com/articles/runtime-principles#web-servers
  2. https://stackoverflow.com/a/51572239/5045878
  3. https://stackoverflow.com/a/54200996/5045878

【讨论】:

    【解决方案2】:

    我会说你不需要知道端口,因为你所有的请求都会发送到https://hapi.yourdomain.com,而你的前台会发送到https://yourdomain.com

    编辑:

    在 heroku 中,这是定义端口的方式:

    const port = process.env.PORT || 8000
    

    Heroku 将提供您需要的环境变量(每次部署应用时都会更改)

    那么你的 react 应用不需要连接到特定的端口,只需像这样访问你的端点:

    https://back.domain.com/your/endpoint
    

    【讨论】:

    • 不是真的:我的正面在front.domain.com,而我的背面在back.domain.com
    • 我编辑了答案,有帮助吗?你的 react 应用不需要知道端口,因为端口 80 默认是打开的(并映射到 process.env.PORT 中实际监听的任何端口)
    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2020-07-08
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多