你好,我正在尝试连接到第三方rest API,它有点老了,并且它的证书过期了。我使用NodeJS和axios发送请求,目前的情况如下。
agent = new HttpsProxyAgent({ host, port, auth: `${uname}:${pass}` });
this.client = axios.create({
baseURL: this.baseUrl,
headers: this.headers,
httpsAgent: agent,
});上面的agent创建了一个代理代理,这样我的请求就可以穿透我后来在axios上挂载的主机,我正在使用这个包https-proxy-agent。现在代理可以正常工作了,但是它抛出了一个错误certificate has expired。我尝试过使用rejectUnauthorized: false,但是这一点都不起作用,但是我又找到了一个解决方案,那就是使用NODE_TLS_REJECT_UNAUTHORIZED=0。但是,人们普遍认为在服务器上使用是危险的,我也想知道我是否会使用这个环境变量,它会在拦截时使客户端请求可见吗?
这里我需要的只是连接到代理并拒绝这个axios客户端的证书错误,如果有其他http客户端的解决方案--请随意分享,非常感谢。
发布于 2022-11-27 16:05:19
设法用不同的包来解决这个问题。
import { getProxyHttpAgent } from 'proxy-http-agent';
const proxyUrl = `http://${host}:${port}`;
agent = getProxyHttpAgent({
proxy: proxyUrl,
endServerProtocol: 'https:',
rejectUnauthorized: false,
});使用此包设置代理非常有效,除非出于某些原因,我必须使用非基于身份验证的代理,否则它会引发一些奇怪的ssl错误,如下所示
tunneling socket could not be established, cause=write EPROTO 20920:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332:。
https://stackoverflow.com/questions/74589766
复制相似问题