【问题标题】:Post requests timeout but Get requests get through发布请求超时但获取请求通过
【发布时间】:2022-01-04 01:13:28
【问题描述】:

我正在部署一个使用 Firebase 托管的前端网站和一个使用云运行托管容器的 nodejs 后端 API。

我正在使用 Firebase 重写将所有 API 调用重定向到云运行服务,以便我可以从 mydomain.com/api/**** 访问 API

"rewrites": [
      {
        "source": "/api/**",
        "run": {
          "serviceId": "*****",
          "region": "******"
        }
     }
],

我正在使用 Hapi js 框架,并在服务器配置中将 cors 设置为对所有来源开放

routes : {
    cors  : { origin: ["*"] },
}

当我使用 google 为托管容器分配的 URL 或使用与 firebase 托管关联的自定义域在本地(Windows 上的本地容器)进行 Get 调用以测试 /api/ping/api/check/{id} 等路由时,我得到 200 响应正如预期的那样。

当我尝试 POST 到 /api/contact 时,我从 Firebase 收到连接超时或 502 Bad Gateway(超时限制为 60 秒)。

我不明白为什么它甚至不适用于我在本地运行的容器?当我运行 nodejs 应用程序时,POST API 响应良好。为什么获取而不是发布?

谢谢

【问题讨论】:

  • 你能放一些调试语句来看看调用是否到达后端吗?
  • 嗯,这是一个 hapi js 错误。我的站有节点 12,我在容器中使用节点 16。节点 16 的 Hapi js 响应设置为 null。我将节点版本切换为 12,一切运行正常。

标签: node.js firebase docker google-cloud-run hapijs


【解决方案1】:

这是一个 Hapi.js (HttpAPI) 错误,Node.js 版本 16。

正如@Lemalach 所述,工作站代码在 Node.js 12 上,容器在 Node.js 16 版本上。

Hapi.js 响应在 Node.js 16 中设置为 null。

切换到 Node.js 12 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2021-12-30
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多