我正在禁止节点拒绝自签名证书并发出请求。
const { USER, PW } = process.env;
const b64 = new Buffer(`${VP_API_USER}:${VP_API_PW}`).toString("base64");
const Authorization = `Basic ${b64}`;
const doFind = async url => {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
const results = await fetch(url, { headers: { Authorization } })
.then(r => (r.ok ? r.json() : Promise.reject(r)))
.catch(err => {
return Promise.reject(err);
});
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1;
return results;
};
Run Code Online (Sandbox Code Playgroud)
我仍然被拒绝。
{ FetchError: request to https://<url>:55544/contracts failed, reason: connect ECONNREFUSED <url>:55544
at ClientRequest.<anonymous> (/Users/mjhamm75/Developer/sedd-monorepo/node_modules/node-fetch/index.js:133:11)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
name: 'FetchError',
message: 'request to https://<url>:55544/contracts failed, reason: connect ECONNREFUSED <url>:55544',
type: 'system',
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED' }
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
小智 4
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1;
行应该进入回调内部(您的 then 或 catch 在返回之前。因为承诺在回调中得到解决,但是您的行
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1;
写在它的外面,即使它出现在语句之后,它也会立即运行,而不需要等待回调。因此,您的 tls 实际上从未被禁用。
我希望这有帮助:)
| 归档时间: |
|
| 查看次数: |
84714 次 |
| 最近记录: |