发布请求丢失有效负载

时间:2017-03-21 11:38:02

标签: php laravel

我正在建立一个接收来自外部各方的传入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)上运行,我不知道下一步该尝试什么。

1 个答案:

答案 0 :(得分:1)

发现它!问题是vhost配置中的端口80到443重定向。我早些时候驳回了重定向 - 这似乎是发布请求中缺少有效负载的常见来源 - 可能的原因;我制作了一个测试脚本,它在同一台服务器上成功接收了有效负载。

但是,我已将此测试脚本放在服务器公用文件夹中,该文件夹不受与我的应用程序根目录相同的重定向。删除重定向后,按预期收到的有效负载。