You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS调用login.microsoftonline.com出现getaddrinfo ENOTFOUND错误求助

问题

使用Node.js向微软密钥接口发起GET请求时返回错误 getaddrinfo ENOTFOUND login.microsoftonline.com,但相同请求在Postman中可正常运行。相关代码如下:

const http = require('https');

var options = {
    host: 'login.microsoftonline.com',
    path: '/common/discovery/keys'
  };

  callback = function(response) {
    var str = '';
  
    //another chunk of data has been received, so append it to `str`
    response.on('data', function (chunk) {
      str += chunk;
    });
  
    //the whole response has been received, so we just print it out here
    response.on('end', function () {
      console.log(str);
    });
  }
  
  http.request(options, callback).end();

原因及解决方法

  • DNS解析差异:Postman和Node.js可能使用不同的DNS服务器。可以手动指定公共DNS(如8.8.8.8)测试系统解析,或直接用login.microsoftonline.com的IP地址替换代码中的host字段临时验证。
  • 代理配置不一致:Postman可能自动读取了系统代理或配置了专属代理,而Node.js默认不会继承。若系统存在代理,可在代码中添加代理配置:
    var options = {
        host: 'login.microsoftonline.com',
        path: '/common/discovery/keys',
        agent: new https.Agent({
            proxy: 'http://你的代理地址:端口'
        })
      };
    
  • Node.js环境网络限制:容器、虚拟机等运行环境可能限制了Node.js的网络访问权限,导致域名解析失败。检查环境的防火墙规则、网络策略,确认允许Node.js访问外部域名。
  • hosts文件异常:本地hosts文件可能错误映射了login.microsoftonline.com,导致解析失效。检查系统hosts文件(Windows路径:C:\Windows\System32\drivers\etc\hosts;Linux/macOS路径:/etc/hosts),删除该域名的错误条目。
  • Node.js版本bug:老旧版本的Node.js可能存在HTTPS请求或DNS解析的问题,尝试升级到稳定版后重新测试。

内容的提问来源于stack exchange,提问作者user68288

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:50:27