常见问题与解答#
以下是关于 Webhook 节点 的常见问题与建议解决方案。
监听多个 HTTP 方法#
默认情况下,Webhook 节点仅支持单一 HTTP 方法的调用。例如,它可以接受 GET 或 POST 请求,但不能同时接受两者。如需支持多方法调用:
- 打开节点设置
- 启用允许使用多个 HTTP 方法
- 返回参数设置,节点默认会接受 GET 和 POST 调用,您可以在 HTTP 方法字段中添加其他方法
Webhook 节点会为每个 HTTP 方法提供独立输出,因此您可以根据不同方法执行不同操作。
使用 HTTP 请求节点触发 Webhook 节点#
HTTP 请求 节点可向指定 URL 发起 HTTP 请求:
- 创建新工作流
- 添加 HTTP 请求节点至工作流
- 从请求方法下拉列表选择方法(例如 Webhook 节点中设置为 GET,此处同样选择 GET)
- 复制 Webhook 节点中的 URL,粘贴至 HTTP 请求节点的 URL 字段
- 若使用 Webhook 节点的测试 URL:需先执行包含 Webhook 节点的工作流
- 执行 HTTP 请求节点
使用 curl 触发 Webhook 节点#
您可以使用 curl 发起 HTTP 请求来触发 Webhook 节点。
注意
示例中的 <https://your-n8n.url/webhook/path> 需替换为您的实际 Webhook URL。
以下示例使用 GET 请求,您也可以使用在 HTTP 方法中设置的任何 HTTP 方法。
发起无参数的 HTTP 请求:
curl <https://your-n8n.url/webhook/path>发起带正文参数的 HTTP 请求:
curl -X POST <https://your-n8n.url/webhook/path> -d 'key=value'发起带头部参数的 HTTP 请求:
curl -X POST <https://your-n8n.url/webhook/path> -H 'key:value'发起传输文件的 HTTP 请求:
curl -X POST <https://your-n8n.url/webhook/path> -F 'key=@/path/to/file'---|---
将 /path/to/file 替换为您要发送的文件路径。
发送字符串类型的响应#
默认情况下,响应格式为 JSON 或数组。要发送字符串类型的响应:
- 选择 Response Mode > When Last Node Finishes。
- 选择 Response Data > First Entry JSON。
- 选择 Add Option > Property Name。
- 输入包含响应的属性名称,默认为
data。 - 将 Edit Fields 节点 连接到 Webhook 节点。
- 在 Edit Fields 节点中,选择 Add Value > String。
- 在 Name 字段中输入属性名称,该名称应与步骤 4 中的属性名称一致。
- 在 Value 字段中输入字符串值。
- 将 Keep Only Set 切换为开启状态(绿色)。
调用 Webhook 时,它会发送来自"编辑字段"节点的字符串响应。
测试 URL 与生产 URL#
n8n 为每个 Webhook 节点生成两个 Webhook URL:测试 URL 和 生产 URL。
在构建或测试工作流时,请使用 测试 URL。当您准备在生产环境中使用 Webhook URL 时,请使用 生产 URL。
| URL 类型 | 触发方式 | 监听时长 | 是否在编辑器界面显示数据 |
|---|---|---|---|
| 测试 URL | 选择 监听测试事件 并从源触发测试事件 | 120 秒 | !✅ |
| 生产 URL | 激活工作流 | 直至工作流停用 | !❌ |
更多信息请参阅工作流开发。
白名单中的 IP 地址连接失败#
如果您无法从 IP 白名单中的地址连接,请检查 n8n 是否运行在反向代理之后。
如果是这种情况,请将 N8N_PROXY_HOPS 环境变量 设置为 n8n 运行所在的反向代理数量。
每个路径和方法只能有一个 Webhook#
n8n 只允许为每个路径和 HTTP 方法组合(例如,对 /my-request 的 GET 请求)注册一个 Webhook。这避免了应接收请求的 Webhook 出现歧义。
如果您收到所选路径和方法已被使用的消息,您可以:
- 停用存在冲突 Webhook 的工作流。
- 更改其中一个冲突 Webhook 的路径和/或方法。
n8n Cloud 超时设置#
n8n Cloud 使用 Cloudflare 来防御恶意流量。如果您的 Webhook 在 100 秒内未能响应,传入请求将失败并返回 524 状态码。 因此,对于可能超过此限制的长时间运行流程,您可能需要通过配置两个独立的 Webhook 来引入轮询逻辑:
- 第一个 Webhook 用于启动长时间运行流程并立即返回响应
- 第二个 Webhook 用于定期查询流程状态,并在流程完成后获取结果