我正在为我和妻子在家里建立一个菜单系统。其中一个步骤是计算营养信息,我之前使用了 calorieapi 的免费版,因为它似乎对于我的需求非常合适,尤其是在 Nutriotonix 已经完全消除了免费版之后。我的问题是,我可以从本地机器上正常调用它,但我在 Azure 上托管的 web 端点似乎无法正常调用——我怀疑是被 Cloudflare 阻止了,但我完全不知道为什么会这样,希望有人有更好的见解,而不是等待支持回复。

技术细节:

  • 从 Azure App Service 托管的后端服务调用 Calorie API(GET /api/v1/search/foods)
  • 从本地设备/网络进行手动测试时,请求正常返回并且速度快(<1s)
  • 失败仅限于 HTTP 层,具体来说,DNS、TCP 和 TLS 都完成了瞬间并成功:
    • DNS 解析到 Cloudflare IP(104.21.17.140、172.67.176.209)在 <0.1s 内完成
    • 对端口 443 的原始 TCP 连接:在 0.06s 内成功完成
    • TLS 握手:在 0.22s 内(TLS 1.3)成功完成
    • 在已建立的连接上进行实际的 HTTP GET 请求:在 15s 内超时,完全没有响应,始终如此,无论是使用了还是没有使用浏览器风格的 User-Agent,无论是连接重用策略是什么