nodejs http请求套接字挂断

Posted

技术标签:

【中文标题】nodejs http请求套接字挂断【英文标题】:nodejs http request socket hang up 【发布时间】:2020-06-17 20:10:45 【问题描述】:

我一直在尝试通过http节点模块通过以下代码发送http请求

const https = require('https')

 http.request('http://newportal.timesgroup.cn/Pages/Home.aspx', () => 
   console.log('success')
 )

但收到消息

events.js:174

投掷者; // 未处理的“错误”事件

^

错误:套接字挂断

在 createHangUpError (_http_client.js:332:15) 时

在 TLSSocket.socketOnEnd (_http_client.js:435:23)

在 TLSSocket.emit (events.js:203:15)

在 endReadableNT (_stream_readable.js:1145:12)

在 process._tickCallback (internal/process/next_tick.js:63:19)

在以下位置发出“错误”事件:

在 TLSSocket.socketOnEnd (_http_client.js:435:9)

在 TLSSocket.emit (events.js:203:15)

在 endReadableNT (_stream_readable.js:1145:12)

在 process._tickCallback (internal/process/next_tick.js:63:19)

当我将代码切换到

const request = require('request')
 request.get('http://newportal.timesgroup.cn/Pages/Home.aspx', () => 
   console.log('success')
 )

它成功了,得到了 200 个响应。

然后我尝试用Fiddler抓取网络包,发现使用http.request时没有发送包。

此错误仅发生在我们工作域网络内的 Windows 系统中。

【问题讨论】:

【参考方案1】:

也许可以尝试使用 https 而不是 http,因为您已将其定义为 https

 https.request('http://newportal.timesgroup.cn/Pages/Home.aspx', () => 
 console.log('success')
)

【讨论】:

与 https 请求得到相同的超时结果。我现在怀疑有一些组策略禁止来自节点 js 的 http 或 https 请求。

以上是关于nodejs http请求套接字挂断的主要内容,如果未能解决你的问题,请参考以下文章

“错误:套接字挂断”与 Express

模拟NodeJS中发出的“Socket挂断”

NodeJS HTTP请求未按顺序执行

NodeJS - TCP - 发送 HTTP 请求

邮递员:socket挂断

NodeJS - “套接字挂断”实际上是啥意思?