使用节点/请求的GET请求会引发意外的“读取ECONNRESET”

时间:2019-03-03 04:00:20

标签: node.js https postman node-request

在访问某些网站时,使用节点中的请求库时出现奇怪的行为。

快速背景(与技术问题无关):我在该项目上的目标是阅读纳斯达克的许多股票股息历史记录。历史可能很长,我当然不会坐在这里手动阅读其中的100条。以下页面之一的示例:https://www.nasdaq.com/symbol/msft/dividend-history

技术上的麻烦...我正在使用带有请求模块的节点v11.10.0来调用页面-这是最简单的事情。我曾使用该库执行其他类似任务,但从未遇到过问题。这是我非常简单的脚本:

var request = require("request");
var options = { method: 'GET',
  url: 'https://www.nasdaq.com/symbol/msft/dividend-history',
  headers: 
  { 'Postman-Token': 'e4e9749e-d73e-44b9-994f-9d0522654fb0',
    'cache-control': 'no-cache' } };
request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});

将文件另存为index.js,然后运行

node index.js

那应该得到页面...除了我遇到错误。错误是:

Error: Error: read ECONNRESET
at Request._callback (<localpath>\index.js:8:24)
at self.callback (<localpath>\node_modules\request\request.js:185:22)
at Request.emit (events.js:197:13)
at Request.onRequestError (<localpath>\node_modules\request\request.js:881:8)
at ClientRequest.emit (events.js:197:13)
at TLSSocket.socketErrorListener (_http_client.js:397:9)
at TLSSocket.emit (events.js:197:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at processTicksAndRejections (internal/process/next_tick.js:76:17)

因此,考虑到我可能有问题,我在邮递员中尝试了相同的请求进行验证。但是Postman毫不费力地对上面的相同URL进行get请求。我以为https内容可能存在证书问题,但是我在邮递员中打开和关闭了证书验证功能,无论设置如何,它都能正常工作。

works in postman, ta-da!

这里的附加说明-我的“非常简单的脚本”实际上是我从Node / Request代码块的Postman“代码”选项卡中提取的,因此,我对Postman的工作感到困惑,但Postman自己的节点代码块却不起作用。 / p>

在这一点上,我什至都不在乎我原本打算做什么...我只是想弄清楚为什么我在两种看似等效的方式来发出GET请求时会出现不同的行为。

在这种情况下,是否有人知道缺少那个节点的邮递员?

0 个答案:

没有答案