gpt4 book ai didi

webhooks - Laravel 返回空白的 HTTP 响应

转载 作者:行者123 更新时间:2023-12-01 03:09:16 25 4
gpt4 key购买 nike

所以我正在使用 Xero API 设置一个 webhook,它期望一个没有 cookie 和 gzip 等的空白响应。我似乎无法弄清楚如何发送一个完全空白的响应。

这是我从 ngrok 回复的一个示例:

HTTP/1.1 401 Unauthorized
Server: nginx/1.13.3
Date: Wed, 12 Dec 2018 02:11:07 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive

0

这是执行 HTTP 响应的代码:
http_response_code(401);
exit;

我也试过这个:
return response(null, 401);

但是在 webhook 设置面板中,它向我显示了这个错误:
Intent To Receive required
Last attempt at 2018-12-12 02:15:57 UTC
Failed to respond in timely manner

尽管响应时间<0.5s。我已经向 Xero 发送了一堆屏幕录像,但他们的支持似乎认为它会起作用。

最佳答案

正如错误所说,在您的代码中您似乎无法及时响应(5 秒)。
引用这个Failed to respond in timely manner issue
.
我在使用 laravel 开发 Xero 集成时也遇到了这个问题。能够使用队列解决此问题,如果哈希匹配我将 Xero 事件分派(dispatch)给作业,否则返回 400。因为事件正在队列中处理,它将及时返回响应。

use App\Jobs\XeroWebhook;
public function getUpdatedInvoiceInXero(Request $request)
{
$paylod = file_get_contents('php://input');
$events = json_decode($request->getContent())->events;
$XeroWebhookKey= "your_webhook_key";
$Hash = base64_encode(hash_hmac('sha256', $paylod, $XeroWebhookKey, true));

if ($Hash === $_SERVER['HTTP_X_XERO_SIGNATURE']) {
XeroWebhook::dispatch($events);
} else {
return response(null, 401);
}
}

正如您在此处看到的,我只检查哈希匹配,我在名为“XeroWebhook”的作业中包含了其他功能。
Laravel queues
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class XeroWebhook implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $events;
public function __construct($events, $tenantId)
{
$this->events = $events;
}

public function handle()
{
// rest of the code
}
}

关于webhooks - Laravel 返回空白的 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com