使用axios.get时,套接字挂断,但使用https.get时,套接字挂断

卢卡斯

据我所知,我正在使用两种不同的方法来做同一件事:

const https = require("https");
const axios = require("axios");

let httpsAgent = new https.Agent({rejectUnauthorized: false});

axios.get(`https://${hostname}:${port}${path}`, {httpsAgent})
    .then((data) => { console.log("axios success: " + data.substr(0, 100)); })
    .catch((error) => { console.log("axios error: " + error); });

let data = "";
https.get({ hostname, path, port, agent: httpsAgent },
    (response) => {
        response.on("data", (chunk) => { data += chunk; });
        response.on("end", () => { console.log("https success: " + data.substr(0, 100)); });
    })
    .on("error", (error) => { console.log("https error: " + error); });

当我运行这段代码时,我得到两个不同的结果:

PS C:\Users\me> .\node\node.exe .\generate-test-data.js
axios error: Error: socket hang up
https success: [{"cool":"data"...

这里发生了什么?我感觉它与异步性有关,但不确定如何...有人可以给我一个暗示,说明这两种行为为何/为什么不同吗?

卢卡斯

啊!

在axios源中进行深入研究之后,我发现了这一点:

if (!proxy) {
  var proxyEnv = protocol.slice(0, -1) + '_proxy';
  var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()];
  if (proxyUrl) {
    var parsedProxyUrl = url.parse(proxyUrl);
    proxy = {
      host: parsedProxyUrl.hostname,
      port: parsedProxyUrl.port
    };

    if (parsedProxyUrl.auth) {
      var proxyUrlAuth = parsedProxyUrl.auth.split(':');
      proxy.auth = {
        username: proxyUrlAuth[0],
        password: proxyUrlAuth[1]
      };
    }
  }
}

但是没有no_proxy似乎对此有功能要求...同时,我将只需要:

    delete process.env['http_proxy'];
    delete process.env['HTTP_PROXY'];
    delete process.env['https_proxy'];
    delete process.env['HTTPS_PROXY'];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Virtualbox 套接字挂断

我的 api 调用以错误结束:套接字挂断,我正在使用节点 js 使用 axios 发出并获取调用请求

Node.js 套接字在代理存在时挂断

Node.js:请求时套接字挂断

使用neo4j JS驱动程序进行套接字挂断

套接字在 Nestjs 中挂断以使用 minio 客户端上传文件

将 Postman 与 ReactJS 和 MongooseDB 一起使用时显示“错误:套接字挂断”错误

使用套接字时的烧瓶调试模式

使用套接字时返回承诺

Node.js https.request()错误:套接字挂断

错误:无法建立隧道套接字,原因=套接字在运行 ng e2e Protractor 测试时挂断

Express出现“错误:套接字挂断”

Node.js-错误:套接字挂断

将请求发布到Node-http-proxy Node.js时发生套接字挂断

真正快速处理大量请求时,如何解决“套接字挂断错误”

使用NodeJS TLS套接字的HTTPS通信

如何使用 C 中的套接字向 http/https 网站发送 GET 请求

使用非阻塞IO时关闭UDP套接字

Python TypeError:使用套接字时需要整数

从套接字使用InputStream时Scanner.nextLine()会阻塞

在使用套接字时,如何处理被拆分的消息?

使用Executor接口时如何关闭套接字?

错误:在原始套接字中使用sendto()时,地址错误

如何写入非阻塞套接字(使用epoll时)

使用Python请求时如何获取基础套接字

使用套接字时垃圾回收器循环

使用 socket.io 创建多个套接字时的 ENOBUFS

在使用套接字时重用读取缓冲区

使用BINDTODEVICE时不能监听多个套接字吗?