Skip to content

Respond to Webhook 节点#

使用 Respond to Webhook 节点控制对传入 webhook 的响应。此节点与 Webhook 节点配合使用。

为第一个数据项运行一次

Respond to Webhook 节点运行一次,使用第一个传入的数据项。有关更多信息,请参阅返回多个数据项

如何使用 Respond to Webhook#

要使用 Respond to Webhook 节点:

  1. 添加一个 Webhook 节点作为工作流的触发器节点。
  2. 在 Webhook 节点中,将 Respond 响应 设置为 Using 'Respond to Webhook' node 使用 'Respond to Webhook' 节点
  3. 在工作流中的任何位置添加 Respond to Webhook 节点。如果您希望它返回来自其他节点的数据,请将其放在这些节点之后。

节点参数#

使用这些参数配置节点行为。

Respond With 响应内容#

选择在 webhook 响应中发送什么数据。

  • All Incoming Items 所有传入项目:使用输入中的所有 JSON 项目进行响应。
  • Binary File 二进制文件:使用在响应数据源中定义的二进制文件进行响应。
  • First Incoming Item 第一个传入项目:使用第一个传入项目的 JSON 进行响应。
  • JSON:使用在响应正文中定义的 JSON 对象进行响应。
  • JWT Token JWT令牌:使用 JSON Web Token (JWT) 进行响应。
  • No Data 无数据:无响应负载。
  • Redirect 重定向:重定向到在重定向 URL 中设置的 URL。
  • Text 文本:使用在响应正文中设置的文本进行响应。默认情况下发送 HTML (Content-Type: text/html)。

节点选项#

选择添加选项查看和设置选项。

  • Response Code 响应代码:设置要使用的响应代码
  • Response Headers 响应头:定义要发送的响应头。
  • Put Response in Field 将响应放入字段:当您使用所有传入项目第一个传入项目响应时可用。设置包含响应数据的字段的字段名。
  • Enable Streaming 启用流式传输:启用后,使用流式传输将数据发送回用户。需要配置了响应模式 流式传输的触发器。

n8n 如何保护 HTML 响应安全#

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

这有以下影响:

  • HTML 在沙盒化的 iframe 中渲染,而不是直接在父文档中渲染。
  • 尝试访问顶级窗口或本地存储的 JavaScript 代码将失败。
  • 身份验证头在沙盒化的 iframe 中不可用(例如基本身份验证)。您需要使用替代方法,比如在 HTML 中嵌入短期访问令牌。
  • 相对 URL(例如 <form action="/">)将不起作用。请改用绝对 URL。

模板和示例#

Template widget placeholder.

工作流行为#

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

  • 工作流在未执行 Respond to Webhook 节点的情况下完成:返回状态为 200 的标准消息。
  • 工作流在第一个 Respond to Webhook 节点执行前出错:工作流返回状态为 500 的错误消息。
  • 第二个 Respond to Webhook 节点在第一个节点后执行:工作流会忽略它。
  • Respond to Webhook 节点执行但没有 webhook:工作流会忽略 Respond to Webhook 节点。

输出发送给 webhook 的响应#

默认情况下,Respond to Webhook 节点有一个包含节点输入数据的单一输出分支。

您可以选择启用包含发送给 webhook 的响应的第二个输出分支。要启用此辅助输出,请在画布上打开 Respond to Webhook 节点并选择 Settings 标签。激活 Enable Response Output Branch 选项。

节点现在将有两个输出:

  • Input Data(输入数据): 原始输出,传递节点的输入。
  • Response(响应): 发送给 webhook 的响应对象。

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

在 1.22.0 版本中已弃用

n8n 1.22.0 添加了使用 All Incoming Items 选项返回所有数据项的支持。n8n 建议升级到最新版本的 n8n,而不是使用本节中描述的解决方法。

The Respond to Webhook node runs once, using the first incoming data item. This includes when using expressions. You can't force looping using the Loop node: the workflow will run, but the webhook response will still only contain the results of the first execution.

如果您需要返回多个数据项,请选择以下选项之一:

  • 不使用 Respond to Webhook 节点,而是在 Webhook 节点的 Respond 中使用 When Last Node Finishes 选项。当您想要返回工作流输出的最终数据时使用此选项。
  • 使用 Aggregate 节点将多个数据项转换为单个数据项,然后再将数据传递给 Respond to Webhook 节点。将 Aggregate 设置为 All Item Data (Into a Single List)