php - 特定的 API 调用仅在生产服务器中不起作用
问题描述
我已经尝试调试和诊断此问题将近 2 个月,但无济于事。这是我最后的手段。长话短说(尽可能短):
在我为客户端(php/laravel)开发的应用程序中,我们连接到外部 API(在中国),以从连接云的监控设备获取数据。API 调用有点复杂,因为需要使用一堆取决于请求的时间和内容的神秘散列来生成标头。没问题,一切正常。
到了 8 月 12 日,它出乎意料地失败了,不再获取任何数据并且没有给出错误。我对应用程序代码进行了一些更改(尽管不是那部分),所以我在我的机器和登台服务器上进行了测试,所有这些都运行相同的代码,并且一切正常。它只会在生产中失败。
我们认为这可能是连接问题,甚至是被列入黑名单的 IP,但这些选项已被丢弃。
更糟糕的是,我开始通过命令行 curl 进行连接(以确保应用程序没有导致问题)并且问题仍然存在。除生产外,可在任何地方工作。然后我发现,如果我使用格式错误的标头(故意写错签名或其他),API 会以错误响应(如预期的那样)。所以它肯定不是任何形式的连接。当标题格式正确时,该命令可以在除生产环境之外的任何地方使用。没有对任何系统库进行更新。
我试图通过命令行诊断 curl 以查看它输出了什么样的错误。结果让我更加困惑:没有错误,没有返回码,什么都没有。它只返回空白(零字节)。
这是一个格式错误的请求,这使得 API 返回失败(如预期的那样)
这是一个很好的请求,返回 0 个字节(不是预期的):
我完全不知道该怎么做……没有想法了。API 方面的人说他们自己做了诊断,没有发现任何问题。
接下来我可以尝试什么?
提前致谢!
解决方案
推荐阅读
- matlab - 如何在 PSO 中为整数变量定义等式约束
- php - 如何从多个嵌套的if条件中调用json
- autocomplete - 要实现 Google Place Autocomplete API,session_token 是强制性的吗?
- javascript - 如何在不重新加载 HTML 页面的情况下重定向锚标记链接?
- html - HTML5 画布:如何查询或修改底层位图尺寸而不是 DOM 元素尺寸?
- scala - 如何仅从地图中提取值
- c++ - AVX512非法指令
- treeview - Aggrid-treeGrid:错误:没有为 DetailPanelComponent 找到组件工厂
- java - 如何从图像表示构造二叉树?
- angular - 如何正确编写服务并将图像上传到 Angular 2?