Mindket

n8n Webhook:Webhook 节点以及测试 URL 与生产 URL 的用法

黑色横幅,带有 n8n 的标志,标题是“n8n 入门课”,下面是“第一个工作流、Webhook、AI 智能体与自托管”。

n8n 的 Webhook 节点,会在别的应用或脚本发来 HTTP 请求时启动一个工作流。它有两个 URL:测试 URL 只在你监听测试事件时才响应,数据显示在编辑器里。生产 URL 要等工作流发布后才响应,运行记录在 Executions 标签页。本课搭一个 Webhook,再用 curl 把两个 URL 都调用一遍。

本节内容

  • 搭出一个接收 POST 请求并返回数据的 Webhook 节点。
  • 分清测试 URL 和生产 URL,知道各自什么时候会响应。
  • 在终端里用 curl 调用 Webhook。
  • 选择 Webhook 怎样返回结果,以及怎样给它加上访问限制。
全部课程
本页目录
  1. 开始之前
  2. 搭一个 Webhook,用 curl 调用它
  3. 测试 URL 还是生产 URL
  4. 选择 Webhook 怎样返回结果
  5. 限制与防护
  6. n8n 团队和 n8n-skills 的作者怎么说 Webhook 数据
  7. 常见错误
  8. 自己试一试
  9. 接下来学什么
  10. 自测一下
  11. 常见问题
  12. 资料来源

开始之前

你需要一个 n8n 实例,比如第 1 课用的那个,再加一个能运行 curl 的终端。在 Windows PowerShell 5.1 里,curl 是另一个命令的别名,所以要输入 curl.exe。

下面两次调用都从同一台机器发出,所以暂时不需要让它能从互联网访问。外部服务想调用你笔记本上的 n8n,是另一回事,常见错误那一节会说为什么。

搭一个 Webhook,用 curl 调用它

下面这个 Webhook 接收 POST 请求里的一个名字,再返回一句问候。代码里是 n8n 文档自己的 curl 写法:第一条调用测试 URL,第二条调用生产 URL。真实的 URL 请从 Webhook 节点里复制,因为你的主机和路径会不一样。

curl --request POST <https://your-n8n.url/webhook-test/hello> --data 'name=Ada'
curl --request POST <https://your-n8n.url/webhook/hello> --data 'name=Ada'
  1. 新建一个工作流,添加 Webhook 节点作为触发器。
  2. 把 HTTP Method 设为 POST。节点默认只接受一种方法,所以用别的方法发来的请求匹配不上。
  3. Path 可以保持原样,也可以自己填,比如 hello。n8n 默认填一个随机路径,免得和别的 Webhook 冲突。
  4. 把 Respond 设为 When Last Node Finishes,Response Data 设为 First Entry JSON。
  5. 选择 Listen for test event。n8n 会注册测试 URL,并保持 120 秒有效。在终端里运行上面代码中的第一条命令,这条请求会作为数据出现在节点里。
  6. 在 Webhook 后面添加 Edit Fields (Set) 节点。新增一个字段 greeting,Value 里先输入 "Hello, ",再从 INPUT 面板把 name 拖进来,它在 body 下面。表达式就变成 {{ $json.body.name }}。
  7. 选择 Execute workflow,它会重新注册测试 URL,然后再发一次同样的命令。终端会以 JSON 形式打印出 Edit Fields 节点的输出。
  8. 把 Webhook 节点切换到 Production URL,再 Publish 工作流,运行第二条命令。这次编辑器里什么也不会出现,要去 Executions 标签页看这次运行。

测试 URL 还是生产 URL

Webhook 节点面板顶部同时显示两个 URL,用一个开关切换当前显示哪一个,这是节点说明页里写的。两者的区别在于什么时候响应,背后的工作流是同一个。

路径里的那一段由两个设置决定,N8N_ENDPOINT_WEBHOOK 和 N8N_ENDPOINT_WEBHOOK_TEST,自托管的实例可以改它们。n8n 的 Docker 页面把隧道模式称为本地开发工具,并提醒不要在生产环境使用。不过在 localhost 上开发时,n8n 要求用隧道模式启动,外部服务才够得到这个 Webhook。

出自 Webhook 节点的工作流开发页面,以及端点环境变量的默认值。
区别测试 URL生产 URL
什么时候注册工作流未发布时,你选择 Listen for test event 或 Execute workflow你发布工作流时
响应多久开始监听后约 120 秒直到你取消发布工作流
数据出现在哪里编辑器里工作流的 Executions 标签页
默认路径段webhook-testwebhook
用来做什么搭建和调试真正来调用你的外部服务

选择 Webhook 怎样返回结果

Webhook 节点上的 Respond 设置,决定调用方拿到什么。Immediately 返回响应码和一句 "Workflow got started"。When Last Node Finishes 返回最后一个节点的输出,再由 Response Data 选择返回全部条目、第一条的 JSON、第一条的二进制数据,或者不返回正文。Streaming response 在工作流运行的同时把数据发回去,需要能流式输出的节点,比如 AI Agent 节点。

想在工作流中间就给出回复,把 Respond 设为 Using 'Respond to Webhook' node,再把 Respond to Webhook 节点放到合适的位置。

  • 这个节点只运行一次,用的是第一条传入的数据,在循环里也一样。之后再运行的第二个 Respond to Webhook 会被忽略。
  • 它的 Respond With 菜单有 All Incoming Items、Binary File、First Incoming Item、JSON、JWT Token、No Data、Redirect 和 Text。Text 默认发送 HTML。
  • 工作流结束时没有走到这个节点,返回的是标准消息,状态码 200。在它之前就出错,返回的是错误,状态码 500。
  • 从 n8n 1.103.0 起,HTML 响应会被包在沙盒 iframe 里,里面的相对 URL 无效,要改用绝对 URL。

限制与防护

认证方式设为 None 时,任何拿到 URL 的人都能调用它。Webhook 节点提供了真正的防护手段,下面几个数字则是它的限制。在付费套餐上,每个触发了 Webhook 的请求,也算一次执行。

值得记住的三个数字

120

选择 Listen for test event 之后,测试 Webhook 保持有效的秒数

来源:n8n 文档:Webhook 工作流开发 (2026年11月4日 查阅)

16 MB

Webhook 默认能接收的请求体上限

来源:n8n 文档:Webhook 节点 (2026年11月4日 查阅)

100

在 n8n Cloud 上,Cloudflare 让 Webhook 请求以 524 状态失败前等待的秒数

来源:n8n 文档:Webhook 常见问题 (2026年11月4日 查阅)

  • 在节点上选一种认证方式:通过 Webhook 凭据使用 Basic auth、Header auth 或 JWT auth,或者 n8n User Auth(OAuth2),也可以选 None。
  • 在 IP(s) Allowlist 里填入允许调用这个 URL 的地址,其他地址会收到 403。
  • Allowed Origins (CORS) 默认是 *,也就是允许所有来源。
  • 在 n8n Cloud 上,任务要跑超过 100 秒的话,先用一个 Webhook 立刻回复,再让调用方去轮询第二个 Webhook 拿结果。

n8n 团队和 n8n-skills 的作者怎么说 Webhook 数据

2025 年 8 月 27 日,n8n 团队在 X 上宣布了聊天流式输出,卖点是逐字显示回复。放到 Webhook 节点上,就是 Streaming response 模式。n8n 的流式输出页面列出了两个能流式输出的节点:AI Agent 和 Respond to Webhook。调用方等一段长回答时,不用等运行结束就能先读到文字。

Romuald Członkowski 在华沙的 AiAdvisors 工作。他做了 n8n-skills,一套用 Claude Code 搭 n8n 工作流的技能。2026 年 11 月 5 日,这个仓库在 GitHub 上有 6.6k 星。

它的表达式技能把一个坑标成了关键:Webhook 把发来的数据放在 body 下面。第 6 步从 body 下面拖出 name,就是这个原因,表达式最后是 {{ $json.body.name }}。读 Webhook 数据的表达式返回空值时,先看是不是漏了 body。

关键陷阱:Webhook 的数据在 $json.body 下面

Romuald Członkowski, n8n-skills 的作者,AiAdvisors,引文为译文 · GitHub (2026年11月5日 查阅)
n8n.io(@n8n_io)2025 年 8 月 27 日在 X 上的帖子:n8n 上线了聊天流式输出。更快,更顺,逐字回复。用起来就像你熟悉的那些聊天产品,只是背后换成了你自己的自动化。
n8n.io 在 X 上,2025 年 8 月 27 日
n8n 自己的 YouTube 频道,Beginner Course 第 2 集,介绍 API 和 Webhook。

X 官方嵌入卡片的截图,拍摄于 2026 年 11 月 5 日,时间为 UTC。点击截图可到 X 上打开原帖。

常见错误

  • 没人监听时就去调用测试 URL。只有 n8n 在监听时它才响应,选了 Listen for test event 或 Execute workflow 之后才开始监听。
  • 还没发布就调用生产 URL。n8n 在你发布工作流时才注册生产 Webhook,之前没有。
  • 请求方法发错了。要同时接受多种方法,就在节点的 Settings 里打开 Allow Multiple HTTP Methods,再在 HTTP Methods 里添加方法。这样每种方法对应一个输出。
  • 两个工作流用了同一个路径。n8n 对每一对路径加方法只允许一个 Webhook,并提示你选的这一对已被占用。取消发布另一个工作流,或者改掉路径或方法。
  • 用 HTTP Request 节点调用时,请求方法和 Webhook 的方法不一致。两边要对上,用测试 URL 时还要先让 Webhook 节点执行工作流。
  • IP 白名单只看到代理的地址。在反向代理后面,把 N8N_PROXY_HOPS 设成代理的层数。同样的部署下,编辑器里还会显示错误的 URL,要设置 N8N_WEBHOOK_URL 才行。代理页面里有说明,第 4 课也会讲到。

自己试一试

  • 把 IP(s) Allowlist 设成一个不是你自己的地址,调用生产 URL,看看返回了什么。试完把名单清空。
  • 给节点加上一种认证方式,然后不带凭据调用一次,再带凭据调用一次。
  • 加一个 Respond to Webhook 节点,返回 JSON 并自定义响应码,然后在终端里确认这个响应码。
  • 给你这个只接受 POST 的 Webhook 发一个 GET 请求,看看返回了什么。

接下来学什么

Webhook 也可以给智能体供数据,它的流式响应模式就是为这种场景准备的。第 3 课用聊天模型、记忆和工具搭一个 AI 智能体。如果想看围绕这类触发器做好的现成工作流,导入 n8n 工作流讲了商店里下载的文件怎样变成你自己实例上能运行的副本。

自测一下

  1. 你用 curl 调用测试 URL,没有任何回复。该怎么做?

    查看答案

    C. 选择 Listen for test event,然后在 120 秒内再调用一次 测试 URL 只在 n8n 监听时才响应,选了 Listen for test event 之后保持 120 秒有效。

  2. 哪一种 Respond 设置,能让 Webhook 在工作流中间就给出回复?

    查看答案

    A. Using 'Respond to Webhook' node 选了这一项,就把 Respond to Webhook 节点放到合适的位置,而且只有它的第一次运行会发出响应。

  3. 怎样让一个 Webhook 同时接受 GET 和 POST?

    查看答案

    D. 在节点的 Settings 里打开 Allow Multiple HTTP Methods 节点默认只接受一种方法,Settings 里的这个开关可以列出多种,每种方法对应一个输出。

  4. 哪一项设置会对你没列出的所有地址返回 403?

    查看答案

    B. IP(s) Allowlist IP(s) Allowlist 里填的是允许调用这个 URL 的地址,而 Allowed Origins (CORS) 默认是 *,允许所有来源。

常见问题

能往 n8n Webhook 发送文件吗?

能。用表单数据发送,比如 curl 的 --form 'key=@/path/to/file',再设置节点的 Binary Property 选项,它指定接收文件的属性名。这个选项要求请求方法是 POST、PATCH 或 PUT。

一个 n8n Webhook 能同时接受 GET 和 POST 吗?

能。节点默认只接受一种方法,不过它的 Settings 里有个 Allow Multiple HTTP Methods 开关,打开后就可以列出多种。n8n 会给节点生成与方法数量相同的输出。

n8n Webhook 最大能接收多大的请求?

默认最大 16 MB。自托管的实例可以用 N8N_PAYLOAD_SIZE_MAX 变量调整,它的单位是 MiB,改完需要重启,详见端点变量。

怎么保护 n8n Webhook 的安全?

把认证方式和 IP 白名单结合起来用。节点支持 Basic、Header 和 JWT 认证,也支持通过 OAuth2 的 n8n User Auth,白名单则会对其他所有地址返回 403。

在自己笔记本上测试 Webhook,需要公网地址吗?

只有调用方在别处时才需要。同一台机器上用 curl 调用,什么都不用准备。要让互联网上的服务访问到,就把 n8n 放到有公网地址的服务器上,开发阶段也可以用 n8n 的隧道模式。

n8n Webhook 会超时吗?

Webhook 页面没有给出它自己的时间限制。在 n8n Cloud 上,Webhook 超过 100 秒还没响应,就会收到 Cloudflare 返回的 524 状态,所以耗时长的任务要用两个 Webhook,一个负责启动,一个负责轮询。

n8n Webhook 能返回一个 HTML 页面吗?

能,用 Respond to Webhook 节点并选 Text,它默认发送 HTML。要知道页面会放在沙盒 iframe 里,读不到顶层窗口,也不能用相对链接。

资料来源

  1. n8n Docs: Webhook node (2026年11月4日 查阅)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook
  2. n8n Docs: Webhook workflow development (2026年11月4日 查阅)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development
  3. n8n Docs: Webhook common issues (2026年11月4日 查阅)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues
  4. n8n Docs: Respond to Webhook node (2026年11月4日 查阅)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook
  5. n8n Docs: Endpoints environment variables (2026年11月5日 查阅)https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/endpoints
  6. n8n Docs: Configure webhook URLs with a reverse proxy (2026年11月4日 查阅)https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-webhook-urls-with-reverse-proxy
  7. n8n Docs: Expressions for data transformation (2026年11月4日 查阅)https://docs.n8n.io/build/work-with-data/transform-data/expressions-for-data-transformation
  8. n8n Docs: Understand executions (2026年11月4日 查阅)https://docs.n8n.io/build/understand-workflows/understand-executions
  9. n8n Docs: Install with Docker (2026年11月4日 查阅)https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker
  10. n8n Docs: Stream real-time responses (2026年11月5日 查阅)https://docs.n8n.io/build/understand-workflows/understand-executions/stream-real-time-responses
  11. n8n.io on X: chat streaming has landed in n8n, 27 August 2025 (2026年11月5日 查阅)https://x.com/n8n_io/status/1960613359037886710
  12. Romuald Członkowski on GitHub: n8n-skills (2026年11月5日 查阅)https://github.com/czlonkowski/n8n-skills
  13. n8n on YouTube: n8n Beginner Course (2/9) - Introduction to APIs and Webhooks (2026年11月5日 查阅)https://www.youtube.com/watch?v=y_cpFMF1pzk

分享本节课

导入一个围绕触发器做好的工作流

从 Mindket 下载一个 n8n 工作流,导入到你的实例里,看它的触发器怎样启动一次运行。

阅读导入指南

本节课的 Markdown 版本 · n8n 入门课:面向新手的免费教程 · 全部课程