跳到主要内容

常见问题与解答#

以下是关于 Webhook 节点 的常见问题与建议解决方案。

监听多种 HTTP 方法#

默认情况下,Webhook 节点仅支持单一调用方法。例如:可接收 GET 或 POST 请求,但不可同时接收两种请求。如需支持多方法调用:

  1. 进入节点设置
  2. 开启允许多种 HTTP 方法
  3. 返回参数界面。默认情况下节点将同时接收 GET 与 POST 调用,可通过 HTTP 方法字段添加其他方法

Webhook 节点会为每种方法提供独立输出,因此可根据请求方法执行不同操作。

使用 HTTP 请求节点触发 Webhook 节点#

HTTP 请求节点 可向指定 URL 发起 HTTP 请求。

  1. 创建新工作流
  2. 添加 HTTP 请求节点至工作流
  3. 请求方法下拉列表选择方法(例如:若在 Webhook 节点中选择 GET 作为 HTTP 方法,则在此处同样选择 GET)
  4. 复制 Webhook 节点中的 URL 粘贴至 HTTP 请求节点的 URL 字段
  5. 若使用 webhook 节点的测试 URL:需先执行含 Webhook 节点的工作流
  6. 执行 HTTP 请求节点

使用 curl 触发 Webhook 节点#

可通过 curl 发起 HTTP 请求来触发 Webhook 节点。

注意

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

发起无参数的 HTTP 请求:

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

发送带有请求体参数的HTTP请求:

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

发送带有标头参数的HTTP请求:

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

发送文件的HTTP请求:

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. 编辑字段节点 连接到 Webhook 节点
  6. 在编辑字段节点中选择 添加值 > 字符串
  7. 名称 字段输入属性名称(需与第4步的属性名称一致)
  8. 字段输入字符串值
  9. 仅保留设置项 切换为开启状态(绿色)

调用 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 方法组合注册一个 Webhook(例如对 /my-requestGET 请求),这可避免请求接收方的不确定性。

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

  • 停用存在冲突 Webhook 的工作流
  • 修改冲突 Webhook 的路径和/或方法

n8n Cloud 超时限制#

n8n Cloud 使用 Cloudflare 防御恶意流量。如果 Webhook 未在 100 秒内响应,传入请求将失败并返回 524 状态码

因此,对于可能超时的长时间运行进程,您需要通过配置两个独立 Webhook 来实现轮询机制:

  • 第一个 Webhook 用于启动长时间运行进程并立即返回响应
  • 第二个 Webhook 用于定期查询进程状态并在完成后获取结果