Nodejs http.request 老是连接不上

发布于 1周前 作者 h691938207 来自 nodejs/Nestjs

Nodejs http.request 老是连接不上

let connectTimeOut = setTimeout(function () { req.abort(); }, 10*1000);
let req = http.request({
hostname: reqUrl.hostname,
path: reqUrl.path,
method: req.method,
headers: headers,
}, function (res) {
clearTimeout(connectTimeOut);
…
});

经常连接不上直到 10 秒超时,网络都是正常的, wget 也能正常连接 reqUrl ,这是什么问题?


5 回复

查你 header 不让你连。


不是这种原因

把 http.request 参数打印出来看看

不太明白你的意思,就是上面的代码呀
请求各种网站都会超时

遇到 Node.js 中 http.request 无法连接的问题时,通常可以从以下几个方面进行排查和解决:

  1. 检查URL和端口: 确保请求的URL和端口号是正确的。如果URL或端口有误,将无法建立连接。

  2. 网络问题: 检查服务器是否可达,可以使用pingtelnet命令测试网络连接。

  3. 代理和防火墙: 如果你的环境有代理服务器或防火墙,请确保它们允许你的请求通过。

  4. 请求超时: 可以设置timeout选项来避免无限等待。

  5. 错误处理: 确保你的代码中有适当的错误处理逻辑。

下面是一个示例代码,展示了如何设置基本的请求并处理错误:

const http = require('http');

const options = {
  hostname: 'example.com',
  port: 80,
  path: '/',
  method: 'GET',
  timeout: 5000  // 设置超时时间为5秒
};

const req = http.request(options, (res) => {
  console.log(`状态码: ${res.statusCode}`);
});

req.on('error', (e) => {
  console.error(`请求遇到问题: ${e.message}`);
});

req.end();

如果仍然无法连接,可以进一步检查:

  • 服务器日志,查看是否有关于连接失败的详细错误信息。
  • 客户端日志,特别是网络层面的日志,可能有助于诊断问题。

希望这些步骤能帮助你解决问题!如果问题依旧,请提供更详细的错误信息以便进一步分析。

回到顶部