Geo*_*ang 5 ssl node.js tls1.2 ionic2 angular
我正在开发基于 Ionic + Angular + Cordova + Node js 的移动应用程序。
应用程序通过 window.XMLHttpRequest 访问 https 服务器:
module.exports = function request (method, url, body, headers) {
return new Promise(function (resolve, reject) {
var xhr = new window.XMLHttpRequest()
xhr.open(method, url)
xhr.onload = function () {
return resolve({
status: xhr.status,
body: xhr.responseText
})
}
xhr.onerror = xhr.onabort = function () {
return reject(new Error(xhr.statusText || 'XHR aborted: ' + url))
}
Object.keys(headers).forEach(function (header) {
xhr.setRequestHeader(header, headers[header])
})
xhr.send(body)
})
}
Run Code Online (Sandbox Code Playgroud)
要执行此功能,需要将适当的根 CA 插入到节点环境中。因为我不控制发出 https 请求的代码,所以我更喜欢一种基于策略/配置的方法,它可以在节点 js 中启用额外的根 CA。
我四处搜索,发现该节点实际上提供了一个环境变量“ NODE_EXTRA_CA_CERTS ”,这似乎符合我的目的。
但是我找不到任何关于如何利用这个变量的例子。
我的实现是安装 npm 包dotenv-webpack。
添加了一个 .env 文件,其中包含配置“NODE_EXTRA_CA_CERTS=./assets/cert/cacert.pem”(相应根 CA 的文件路径)。
我可以验证变量 NODE_EXTRA_CA_CERTS 是否已成功设置。但它似乎没有任何影响。由于安全原因,对服务器的访问被拒绝。
所以我的问题:谁能提供一个关于如何使用变量“NODE_EXTRA_CA_CERTS”的例子?
谢谢
小智 6
因此,您正在讨论的 env 变量是在“系统”级别提供的,因此您不需要在 env 文件中本地定义该变量。
如果你想访问该变量,你应该在 dotenv-webpack 上使用以下配置:
Dotenv({
systemvars: true
})
Run Code Online (Sandbox Code Playgroud)
这将允许您访问系统级变量。要访问该变量,您将使用变量:process.env.NODE_EXTRA_CA_CERTS。
process存储有关节点进程运行的信息。env存储所有环境变量(由 填充dotenv-webpack)。您可以process在此处阅读有关全局变量的更多信息: https: //nodejs.org/api/process.html
| 归档时间: |
|
| 查看次数: |
18937 次 |
| 最近记录: |