我正在尝试使用node-red作为前端来与我正在构建的REST API进行交互。我的API使用https,但在我的本地服务器上,证书没有完美设置,当我尝试使用“http请求”节点时,我收到错误:
UNABLE_TO_VERIFY_LEAF_SIGNATURE
有没有办法将node-red配置为不太严格并允许SSL协议错误并继续处理http请求?有没有人创建自己的“http请求”节点版本,其严格程度不如默认版本?
(在Google Chome浏览器中,我有一个绿色挂锁,因此SSL几乎正确,节点红色非常挑剔)
要运行node-red,我使用docker:
docker run -dp 1880:1880 -v ~/.node-red:/root/.node-red --name node-red cpswan/node-red
这是我的节点红色项目源代码:
[{"id":"e246fcb9.1db9","type":"inject","name":"Trigger user/me","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":200,"y":140,"z":"e7bac913.184538","wires":[["f9d78108.06288"]]},{"id":"96b8b92c.694748","type":"http request","name":"user/me","method":"GET","ret":"obj","url":"https://local.supertasker.com/api/user/me","x":711,"y":141,"z":"e7bac913.184538","wires":[["5150419b.aeafc"]]},{"id":"5150419b.aeafc","type":"debug","name":"","active":true,"console":"false","complete":"false","x":906,"y":140,"z":"e7bac913.184538","wires":[]},{"id":"f9d78108.06288","type":"function","name":"Add 'Accept:application/json' header","func":"\nmsg.headers = {\n 'Accept':'application/json'\n};\n\n// Return the message so it can be sent on\nreturn msg;","outputs":1,"valid":true,"x":464,"y":140,"z":"e7bac913.184538","wires":[["96b8b92c.694748"]]}]
答案 0 :(得分:3)
目前,node-red没有公开直接执行此操作的方法,但您可以设置NODE_TLS_REJECT_UNAUTHORIZED
环境变量以在node.js级别禁用它:
例如:
NODE_TLS_REJECT_UNAUTHORIZED=0 node red.js
答案 1 :(得分:1)
在settings.js
文件中添加以下代码。在module.exports
行之前
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
如果要查找文件位置,请在节点上运行红色,并显示文件位置。
答案 2 :(得分:0)
如果它对任何人都有帮助,以下是使用{var> {strong}使用{var 3>} Docker {{1}的ENV var,使用brought to light 无HTTPS错误尝试节点红色的方法}}):
使用此内容创建NODE_TLS_REJECT_UNAUTHORIZED=0
:
Dockerfile
构建它:
FROM node:0.10
RUN npm install -g node-red
EXPOSE 1880
ENV NODE_TLS_REJECT_UNAUTHORIZED=0
CMD ["/usr/local/bin/node-red"]
运行它:
docker build -t="yourname/node-red" .
如果您需要node-red app来访问主机上运行的服务,您可以将该服务的名称添加到引用docker gateway IP的node-red容器的docker run -dp 1880:1880 -v ~/.node-red:/root/.node-red --name node-red yourname/node-red
:
/etc/hosts
此后,节点红色" http请求"节点可以在网址中使用docker exec node-red sh -c "echo '172.17.42.1\tmy.local.service.com\n' >> /etc/hosts"
。
答案 3 :(得分:0)
我在 ubuntu 20.04 LTS 上使用 snapd 安装了 node-red
如果有人在 ubuntu 上使用这个工具有同样的问题,请看:
<块引用>/etc/systemd/system/snap.node-red.node-red.service
您会发现应用正在使用 /etc/environment
文件来设置环境变量
将EnvironmentFile=...
改为Environment="NODE_TLS_REJECT_UNAUTHORIZED=0"
之后,使用以下命令重新启动 systemd 和 snap.node-red 服务:
sudo systemctl daemon-reload && service snap.node-red.node-red restart
<块引用>
确保服务正在运行:
sudo service snap.node-red.node-red status
请求应该正常通过