Skip to content

常见问题与解答#

以下是关于 Webhook 节点的一些常见问题和解决方案。

监听多种 HTTP 方法#

默认情况下,Webhook 节点只接受单一 HTTP 方法的调用。例如,它可以接受 GET 或 POST 请求,但不能同时接受两者。如需接受多种方法的调用:

  1. 打开节点设置
  2. 启用允许多种 HTTP 方法
  3. 返回参数设置。默认情况下,节点现在会接受 GET 和 POST 调用。您可以在 HTTP 方法字段中添加其他方法

Webhook 节点为每种方法提供单独的输出,因此您可以根据不同的 HTTP 方法执行不同的操作。

使用 HTTP Request 节点触发 Webhook 节点#

HTTP Request 节点可以向您指定的 URL 发起 HTTP 请求。

  1. 创建一个新工作流
  2. 在工作流中添加 HTTP Request 节点
  3. 请求方法下拉列表中选择方法。例如,如果您在 Webhook 节点中选择了 GET 作为 HTTP 方法,则在 HTTP Request 节点中也选择 GET 作为请求方法
  4. 从 Webhook 节点复制 URL,并粘贴到 HTTP Request 节点的 URL 字段中
  5. 如果使用 webhook 节点的测试 URL:请先执行包含 Webhook 节点的工作流
  6. 执行 HTTP Request 节点

使用 curl 触发 Webhook 节点#

您可以使用 curl 发起 HTTP 请求来触发 Webhook 节点。

Note

在示例中,请将 <https://your-n8n.url/webhook/path> 替换为您实际的 webhook URL。 示例中使用的是 GET 请求,您可以使用在 HTTP 方法 中设置的任何 HTTP 方法。

发起不带任何参数的 HTTP 请求:

1
curl --request GET <https://your-n8n.url/webhook/path>

发起带 body 参数的 HTTP 请求:

1
curl --request GET <https://your-n8n.url/webhook/path> --data 'key=value'

发起带 header 参数的 HTTP 请求:

1
curl --request GET <https://your-n8n.url/webhook/path> --header 'key=value'

发起 HTTP 请求发送文件:

1
curl --request GET <https://your-n8n.url/webhook/path> --from 'key=@/path/to/file'
/path/to/file 替换为您要发送的文件路径。

发送字符串类型的响应#

默认情况下,响应格式为 JSON 或数组。要发送字符串类型的响应:

  1. 选择 响应模式 > 当最后一个节点完成时
  2. 选择 响应数据 > 首个条目 JSON
  3. 选择 添加选项 > 属性名称
  4. 输入包含响应的属性名称,默认为 data
  5. Edit Fields 节点 连接到 Webhook 节点。
  6. 在 Edit Fields 节点中,选择 添加值 > 字符串
  7. 名称 字段输入属性名称,应与步骤 4 中的属性名称一致。
  8. 字段输入字符串值。
  9. 仅保留设置项 切换为开启状态(绿色)。

当您调用 Webhook 时,它将发送来自 Edit Fields 节点的字符串响应。

测试 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 方法组合注册一个 Webhook(例如,对 /my-requestGET 请求)。这避免了请求应该由哪个 Webhook 接收的歧义。

如果您收到所选路径和方法已被占用的提示,您可以:

  • 停用包含冲突 Webhook 的工作流
  • 修改其中一个冲突 Webhook 的路径和/或方法