【发布时间】:2017-06-09 14:09:57
【问题描述】:
我正在开发一个基于 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)
})
}
要执行此功能,需要将适当的根 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”的示例?
谢谢
【问题讨论】:
标签: node.js angular ssl ionic2 tls1.2