NodeJS请求返回403

时间:2019-05-16 15:44:53

标签: node.js

npm的NodeJS请求模块出现问题,它拒绝与具有自签名证书的服务器通信。当我运行以下代码时:

const url = require('url');
const https = require('https');
const request = require('request-promise-native');

const rawRequest = (method, uri) => {
    return new Promise((resolve, reject) => {
        const options = url.parse(uri);
        options.method = method;
        options.rejectUnauthorized = false;

        const req = https.request(options, (res) => {
            let body = '';

            res.on('data', (data) => {
                body += data;
            });

            res.on('end', () => {
                resolve(body);
            })
        });

        req.on('error', reject);

        req.end();
    });
}

rawRequest('GET', 'https://XXX.XXX.XXX.XXX:XXXX/v1/')
.then((res) => {
    console.log('[rawRequest-SUCCESS]');
})
.catch((error) => {
    console.error('[rawRequest-ERROR]', error.message);
});

request({
    method: 'GET',
    url: 'https://XXX.XXX.XXX.XXX:XXXX/v1/',
    rejectUnauthorized: false
})
.then((res) => {
    console.log('[request-SUCCESS]');
})
.catch((error) => {
    console.error('[request-ERROR]', error.message);
});

我得到以下结果:

[rawRequest-SUCCESS]
[request-ERROR] Error: tunneling socket could not be established, statusCode=403

我尝试了多种配置请求调用的方法,包括在各种配置中使用agentagentOptions,包括strictSSLrejectUnathorized。我什至在通话开始之前都没有加process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;

为什么原始请求在请求库不起作用的地方工作?

0 个答案:

没有答案