我正在建立一个接收来自外部各方的传入webhook的api。对我的应用程序发布请求在某些情况下缺乏正文。在我的日志中,我看到了带有以下标题的传入请求:
Accept: */*
Content-Length:
Content-Type: application/json
正如您所看到的,内容长度为空。
我无法重现这个问题。到目前为止我尝试过的:
请求有效负载仅来自特定第三方。但是,如果我向第三方提供不同的回调网址,例如请求bin,则不会丢失有效负载。
将此派对源连接到我们的测试环境。它具有完全相同的配置(检查整个php.ini)和相同版本的软件。在我们的测试服务器上,收到带有效负载的请求。
使用Postman向我们的生产环境发送帖子请求时,会收到带有效负载的webhook。
测试和制作都是https。我已经尝试将http请求发送到我们的生产服务器以查看发生了什么,我收到了预期的错误,并且我们的日志中没有收到标题。
检查了php post_max_size,这是24M。
在我的公共文件夹中创建callback.php文件,并让第三方将其webhooks发送到此目的地时,我可以使用以下代码将结果写入日志,其中包含有效负载。如果我稍后在Laravel应用程序中输出php://input
,则它不起作用:
$postdata = file_get_contents("php://input");
$file = fopen("webhook.log","w");
echo fwrite($file,$postdata);
fclose($file);
两个服务器都在相同的php版本(php7)上运行,我不知道下一步该尝试什么。
答案 0 :(得分:1)
但是,我已将此测试脚本放在服务器公用文件夹中,该文件夹不受与我的应用程序根目录相同的重定向。删除重定向后,按预期收到的有效负载。