You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在n8n自定义节点中读取URL参数?

在n8n自定义节点中获取iframe嵌入时的URL参数

核心原因

n8n的自定义节点运行在后端Node.js环境,而非前端浏览器环境,所以无法直接访问前端的window对象,这就是你用window.location.href报错的原因。

可行解决方案

要获取iframe的URL参数,必须先把前端的参数传递到n8n后端的工作流中,再在自定义节点里读取,以下是几种常用方法:

1. 通过Webhook节点中转参数

  • 在你的n8n工作流中添加一个Webhook节点,设置触发方式为POST或GET。
  • 嵌入iframe的前端页面,在加载时将iframe的URL参数(比如token)通过API请求发送到这个Webhook地址,把参数放在请求体或查询参数里。
  • 自定义节点可以从Webhook节点的输出中读取参数,示例代码:
// 从Webhook的请求查询参数中直接获取token
const token = $input.first().json.query.token;

// 如果前端传的是完整iframe URL,用url模块解析参数
const url = require('url');
const incomingUrl = $input.first().json.url; // 前端传过来的完整iframe URL
const params = new url.URLSearchParams(new URL(incomingUrl).search);
console.log(params.get('token'));

2. 调用工作流API时传递参数

如果你的工作流是通过API触发的,在调用n8n的/workflow/{id}/trigger接口时,将iframe的URL参数作为payload的一部分传入:

  • 前端请求示例(伪代码):
fetch('https://your-n8n-instance.com/api/v1/workflow/xxx/trigger', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    data: {
      iframeUrl: window.location.href // 把当前iframe的完整URL传给工作流
    }
  })
});
  • 自定义节点中读取参数:
const url = require('url');
const iframeUrl = $input.first().json.data.iframeUrl;
const params = new url.URLSearchParams(new URL(iframeUrl).search);
console.log(params.get('token'));

3. 利用用户会话传递(适用于用户身份类参数)

如果参数是用户令牌这类和会话绑定的内容,可以通过n8n的认证节点(比如OAuth2、JWT)将参数存入用户会话,然后在自定义节点中通过上下文读取:

// 从工作流上下文中获取会话参数
const context = this.getWorkflowContext();
const token = context.user.token;

关键注意事项

  • 自定义节点完全运行在后端,和前端iframe属于不同的运行环境,无法直接读取前端的URL,必须通过显式的参数传递完成。
  • Node.js环境中可以直接使用内置的url模块或原生URL类解析参数,无需额外安装依赖。

内容的提问来源于stack exchange,提问作者Yasin Tahasildar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:10:36