N8N中文教程
集成节点/Built in_nodes/Core_nodes

响应 Webhook#

使用响应 Webhook 节点来控制对传入 Webhook 的响应。该节点需与 Webhook 节点配合使用。

对首个数据项执行一次

响应 Webhook 节点仅执行一次,使用第一个传入的数据项。更多信息请参阅返回多个数据项。

如何使用响应 Webhook 节点#

使用响应 Webhook 节点的步骤:

  1. 添加 Webhook 节点作为工作流的触发节点。
  2. 在 Webhook 节点中,将响应方式设置为使用"响应 Webhook"节点
  3. 在工作流的任意位置添加响应 Webhook 节点。若需返回其他节点的数据,请将该节点置于那些节点之后。

节点参数#

通过以下参数配置节点行为:

响应内容#

选择在 Webhook 响应中发送的数据类型:

  • 所有传入项:使用输入中的所有 JSON 项进行响应
  • 二进制文件:使用在响应数据源中定义的二进制文件进行响应
  • 首个传入项:使用第一个传入项的 JSON 进行响应
  • JSON:使用在响应体中定义的 JSON 对象进行响应
  • JWT 令牌:使用 JSON Web 令牌 (JWT) 进行响应
  • 无数据:不返回响应负载
  • 重定向:重定向到重定向 URL 中设置的网址
  • 文本:使用在响应体中设置的文本进行响应(默认发送 HTML,即 Content-Type: text/html

节点选项#

选择添加选项以查看和设置选项:

  • 响应代码:设置要使用的 HTTP 状态码
  • 响应头:定义要发送的响应头信息
  • 响应数据存放字段:当选择所有传入项首个传入项时可用。设置包含响应数据的字段名称
  • 启用流式传输:启用后,使用流式传输将数据返回给用户。需要将触发节点配置为流式传输响应模式

n8n 如何保护 HTML 响应#

从 n8n 1.103.0 版本 开始,n8n 会自动将 Webhook 的 HTML 响应包装在 <iframe> 标签中。这是一种保护实例用户的安全机制。

这将产生以下影响:

  • HTML 会在沙盒化的 iframe 中渲染,而不是直接在父文档中渲染
  • 尝试访问顶层窗口或本地存储的 JavaScript 代码将会执行失败
  • 沙盒化 iframe 中无法使用认证标头(例如基础认证)。您需要使用替代方案,例如在 HTML 中嵌入短期访问令牌
  • 相对 URL(例如 <form action="/">)将无法正常工作。请改用绝对 URL

模板和示例#

创建 API 端点 作者:Jonathan 查看模板详情 创建品牌化 AI 驱动的网站聊天机器人 作者:Wayne Simpson 查看模板详情 ⚡AI 驱动的 YouTube 视频摘要与分析 作者:Joseph LePage 查看模板详情 浏览 Respond to Webhook 集成模板,或搜索所有模板

工作流行为#

使用 Respond to Webhook 节点时,工作流的行为如下:

  • 工作流未执行 Respond to Webhook 节点即结束:返回状态码为 200 的标准消息
  • 在第一个 Respond to Webhook 节点执行前工作流出错:工作流返回状态码为 500 的错误消息
  • 在第一个节点之后执行第二个 Respond to Webhook 节点:工作流会忽略该节点
  • 执行了 Respond to Webhook 节点但不存在 webhook:工作流会忽略该 Respond to Webhook 节点

输出发送至 Webhook 的响应#

默认情况下,"响应 Webhook"节点包含一个输出分支,其中包含该节点的输入数据。 您可以选择启用第二个输出分支,其中包含发送至 webhook 的响应。要启用此辅助输出,请在画布中打开"响应 Webhook"节点并选择设置标签页。激活启用响应输出分支选项。 该节点现在将具有两个输出:

  • 输入数据:原始输出,传递节点的输入数据
  • 响应:发送至 webhook 的响应对象

返回多个数据项(已弃用)#

自 1.22.0 版本起弃用 n8n 1.22.0 新增了使用所有传入项选项返回所有数据项的功能。n8n 建议升级至最新版本,而非使用本节所述的变通方案。 "响应 Webhook"节点仅运行一次,并使用第一个传入数据项(包括使用表达式时)。无法通过循环节点强制循环:工作流会运行,但 webhook 响应仍仅包含首次执行的结果。 如需返回多个数据项,请选择以下方案之一:

  • 不使用"响应 Webhook"节点,转而在 Webhook 节点的响应中选择当最后节点完成时选项。此方案适用于返回工作流最终输出的数据
  • 使用聚合节点将多个数据项合并为单个数据项,再传递给"响应 Webhook"节点。将聚合设置为所有项目数据(合并为单个列表)