【问题标题】:Why is Spatie laravel-webhook-client payload empty on production server only?为什么 Spatie laravel-webhook-client 有效负载仅在生产服务器上为空?
【发布时间】:2021-02-06 07:47:33
【问题描述】:

使用 Spatie laravel-webhook-client

所有都在使用 Postman 测试开发服务器 (Windows) 上的端点。获取请求、验证签名并将有效负载发布到排队的作业。从源发送的完整有效负载按预期工作。

生产服务器接收 webhook,验证签名,并将条目保存在 webhook_calls 表中。但是表中的有效负载条目是一个空对象“[]”,排队的作业中没有任何可用的内容。

为什么payload只在生产服务器上是空的?

编辑:发现来自 AWS (SNS) 的源内容类型是 text/plain 而不是 application/json。这显然是 AWS 多年前的疏忽。如何使用 Spatie 包在 Laravel 中处理 text/plain?

【问题讨论】:

    标签: json laravel webhooks


    【解决方案1】:

    哇,多么皇家的 PITA。亚马逊承认 10 年前错误地将 SNS 消息的内容类型设置为 text/plain。不幸的是,我们这些刚开始使用该服务的人正在通过反复试验发现这一点。

    为了解决我的问题,我更改了 Spatie 包中的一行代码:

    laravel-webhook-client/src/Models/WebhookCall.php,第 23 行

    来自 - 'payload' => $request->input(),

    到 - 'payload' => json_decode($request->getContent(), JSON_UNESCAPED_SLASHES),

    这对我有用。我必须坚持使用这个版本的 Spatie,以防他们升级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2011-11-03
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      相关资源
      最近更新 更多