Loading...
Loading...
免费在线 Webhook 调试工具——生成唯一 URL,捕获和检查来自 GitHub、Stripe、Slack 等服务的 HTTP 请求。
⚡ Requests are stored in memory only and lost on server restart. For production use, deploy a persistent webhook receiver.
暂无请求。发送 POST/GET 到你的 Webhook URL。
Webhook 是一种 HTTP 回调——一种服务在事件发生时向另一服务实时发送数据的方式。与传统轮询(客户端反复询问更新)不同,webhook 在事件发生时会立即将数据推送到预先配置的 URL。这使得它们更高效,并能够实现实时集成。
Webhook 是事件驱动架构的基础。GitHub(推送事件、拉取请求)、Stripe(支付事件)、Slack(斜杠命令、交互)等无数服务都使用 webhook 通知外部系统重要事件。单个 webhook 载荷可以包含处理事件所需的一切信息。
调试 webhook 可能具有挑战性,因为数据是从外部服务流向你的服务器。你需要精确看到服务发送的头部和主体。此工具提供一个唯一的、可公开访问的 URL,实时捕获每个传入请求,向你显示完整的 HTTP 请求,包括方法、头部、查询参数和主体内容。
常见的 webhook 模式包括:通过 HMAC 签名验证发送者、实现幂等键以处理重复投递、以及使用指数退避进行重试。大多数 webhook 发送者期望在几秒内收到 2xx 响应;非 2xx 响应会触发重试逻辑,如果处理不当可能迅速淹没你的系统。
在构建 webhook 接收器时,始终验证来源。大多数服务使用 HMAC-SHA256 和密钥签名其载荷。将计算出的签名与请求头部中的签名(例如 GitHub 的 X-Hub-Signature-256)进行比较。这确保请求确实来自预期服务且未被篡改。
请求存储在服务器内存中,Pod 重启后丢失。如需持久存储的生产环境使用,请考虑 webhook.site 或 Hookdeck 等服务,或使用数据库后端部署自己的接收器。
API 是基于请求的——你的应用需要数据时请求它。Webhook 是基于事件的——外部服务在事情发生时将数据发送给你的应用。Webhook 对实时更新更高效,因为它们避免了持续轮询。
大多数服务使用 HMAC 签名。发送者使用共享密钥签名载荷并将签名包含在头部(如 X-Hub-Signature-256)中。你的接收器使用相同密钥重新计算签名并比较。如果匹配,则 webhook 是真实的且未被修改。
返回 200 OK 表示已接收。任何 4xx 或 5xx 响应都会告诉发送者重试。大多数发送者实现指数退避,最大重试窗口通常为 3-7 天。尽快返回 200——如果需要,异步处理 webhook。
可以,但有注意事项。Webhook 提供近乎实时的投递,但没有保证的投递顺序,也没有应用层面的内置重试确认。对于真正的实时双向通信,请考虑 WebSocket 或 Server-Sent Events(SSE)。