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

Node-RED中通过环境变量配置HTTP认证并发起GET请求的问题

Node-RED中通过环境变量配置HTTP认证并发起GET请求的问题

嗨,我来帮你搞定这个问题!你遇到的核心问题是找错了HTTP Request节点识别的认证属性名——Node-RED并不认msg.credentials这个属性,咱们换两种正确的方式来实现:

方法一:直接构造Basic认证请求头(最通用,无需调整节点配置)

这种方式不需要改动HTTP Request节点的认证设置,直接在请求头里带上认证信息,兼容性拉满:

// 先把环境变量的值取出来,代码更清晰易维护
const mendixUrl = env.get("MendixURL");
const plantCode = env.get("PlantCode");
const username = env.get("MendixUsername");
const password = env.get("MendixPassword");

// 用模板字符串拼接完整请求URL,比链式拼接更直观
msg.url = `${mendixUrl}/rest/shopfloorintegration/v1/message?PlantCode=${plantCode}`;

// 生成Basic认证所需的Authorization头
const authStr = Buffer.from(`${username}:${password}`).toString('base64');
msg.headers = {
    "Authorization": `Basic ${authStr}`
};

return msg;

方法二:用Node-RED官方支持的msg.auth属性(需配合节点配置)

如果你想利用Node-RED的内置认证逻辑,需要先把HTTP Request节点的Authentication选项设置为Inherit from msg.auth,然后修改代码里的认证属性:

msg.url = 
 env.get("MendixURL")
 + "/rest/shopfloorintegration/v1/message?PlantCode="
 + env.get("PlantCode");

// 注意这里是msg.auth,不是你之前用的msg.credentials
msg.auth = {
    user : env.get("MendixUsername"),
    pass : env.get("MendixPassword")
};

return msg;

为什么你的原代码不生效?

Node-RED的HTTP Request节点并没有msg.credentials这个属性的定义,它识别的认证相关属性只有两种:一是msg.auth(对应节点的"Inherit from msg.auth"配置),二是直接读取msg.headers里的Authorization头。所以你之前写的msg.credentials节点根本不会读取,自然就没效果啦。

备注:内容来源于stack exchange,提问作者Anonymoose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:09:38