Respond to Webhook 节点#
使用 Respond to Webhook 节点控制对传入 webhook 的响应。此节点与 Webhook 节点配合使用。
为第一个数据项运行一次
Respond to Webhook 节点运行一次,使用第一个传入的数据项。有关更多信息,请参阅返回多个数据项。
如何使用 Respond to Webhook#
要使用 Respond to Webhook 节点:
- 添加一个 Webhook 节点作为工作流的触发器节点。
- 在 Webhook 节点中,将 Respond 响应 设置为 Using 'Respond to Webhook' node 使用 'Respond to Webhook' 节点。
- 在工作流中的任何位置添加 Respond to Webhook 节点。如果您希望它返回来自其他节点的数据,请将其放在这些节点之后。
节点参数#
使用这些参数配置节点行为。
Respond With 响应内容#
选择在 webhook 响应中发送什么数据。
- All Incoming Items(所有传入数据项): 使用输入中的所有 JSON 数据项进行响应。
- Binary File(二进制文件): 使用在 Response Data Source 中定义的二进制文件进行响应。
- First Incoming Item(第一个传入数据项): 使用第一个传入数据项的 JSON 进行响应。
- JSON: 使用在 Response Body 中定义的 JSON 对象进行响应。
- JWT Token: 使用 JSON Web Token (JWT) 进行响应。
- No Data(无数据): 无响应载荷。
- Redirect(重定向): 重定向到 Redirect URL 中设置的 URL。
- Text(文本): 使用 Response Body 中设置的文本进行响应。默认发送 HTML (
Content-Type: text/html
)。
节点选项#
选择 Add Option 来查看和设置选项。
- Response Code(响应代码): 设置要使用的响应代码。
- Response Headers(响应头): 定义要发送的响应头。
- Put Response in Field(将响应放入字段): 当您使用 All Incoming Items 或 First Incoming Item 响应时可用。设置包含响应数据的字段名称。
n8n 如何保护 HTML 响应安全#
从 n8n 版本 1.103.0 开始,n8n 会自动将对 webhook 的 HTML 响应包装在 <iframe>
标签中。这是一种保护实例用户的安全机制。
这有以下影响:
- HTML 在沙盒化的 iframe 中渲染,而不是直接在父文档中渲染。
- 尝试访问顶级窗口或本地存储的 JavaScript 代码将失败。
- 身份验证头在沙盒化的 iframe 中不可用(例如基本身份验证)。您需要使用替代方法,比如在 HTML 中嵌入短期访问令牌。
- 相对 URL(例如
<form action="/">
)将不起作用。请改用绝对 URL。
模板和示例#
工作流行为#
使用 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,而不是使用本节中描述的解决方法。
Respond to Webhook 节点运行一次,使用第一个传入的数据项。这包括使用表达式时。您无法使用 Loop 节点强制循环:工作流会运行,但 webhook 响应仍只包含第一次执行的结果。
如果您需要返回多个数据项,请选择以下选项之一:
- 不使用 Respond to Webhook 节点,而是在 Webhook 节点的 Respond 中使用 When Last Node Finishes 选项。当您想要返回工作流输出的最终数据时使用此选项。
- 使用 Aggregate 节点将多个数据项转换为单个数据项,然后再将数据传递给 Respond to Webhook 节点。将 Aggregate 设置为 All Item Data (Into a Single List)。