问题出现得很突然,日志倒是留得挺全。在笔记本上起了 8000 端口的服务,把 webhook 地址填成 http://localhost:8000/hook,控制台保存成功,可测试事件一条都没到,本地日志里也没有任何入站请求。

刚开始盯着「本机防火墙拦住了隧道工具的入站连接」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。平台只往公网 https 地址投递,localhost 和 127.0.0.1 都不可达。另一种情况是隧道域名每次重启都变,配置里还留着上一次的地址。

还有一种情况,端点没返回 2xx,重试几次后被标记为不可用。

第一件事是用隧道工具把本地端口暴露到公网

ngrok http 8000

本地起一个能打印原始请求的服务

python -m http.server 8000

接着把隧道给出的 https 地址填进配置

python -c "print('https://abcd.ngrok-free.app/hook')"

剩下的就是用 curl 模拟一次投递确认路由通

curl -X POST https://abcd.ngrok-free.app/hook -H "Content-Type: application/json" -d '{"type":"test"}'

怎么算真的好了,看的是同一批现象。本地终端出现平台发来的 POST 请求且路径正确,投递日志里状态码是 200,隧道重启换域名后只需改一处配置。

调试阶段的域名是临时的,把地址抽成环境变量,隧道一换只改一个值,否则每次都要翻配置文件找残留的旧域名。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189