You need to enable JavaScript to run this app. Node.js 使用got库发起带基础认证的GET请求报连接错误,改用request库正常
优惠活动
大模型
产品
解决方案
定价
更多

Node.js 使用got库发起带基础认证的GET请求报连接错误,改用request库正常

got 基础认证请求连接异常排查

配置类差异(request可正常运行的核心原因)

  • 代理配置未自动继承:旧版request默认会自动读取HTTP_PROXY/HTTPS_PROXY环境变量的代理配置,但got默认不会主动加载系统或环境变量代理。如果当前网络需要走代理才能访问目标地址,需手动指定代理参数:
    proxy: 'http://你的代理地址:端口'
    
  • TLS版本兼容差异:request默认兼容旧版TLS(1.0/1.1),但got出于安全考虑默认仅允许TLS 1.2及以上版本通信。如果目标服务器使用旧版TLS协议,会直接触发握手失败的连接类错误,此时需手动调整TLS最低版本:
    https: {
      minVersion: 'TLSv1' // 按目标服务器实际支持的版本调整
    }
    
  • 基础认证配置不规范:不建议手动拼接Authorization请求头,容易出现Base64编码错误、格式不匹配等问题。got原生提供username和password参数,会自动生成符合规范的Basic认证头,无需手动处理编码:
    // 直接在配置对象中添加即可
    username: '你的认证用户名',
    password: '你的认证密码'
    

原有代码格式修正

你当前的代码写法在部分got版本中兼容,但更推荐标准的调用格式(第一个参数为目标URL,第二个为配置对象),可避免隐性参数解析错误:

const got = require('got');

(async () => {
  try {
    const res = await got('https://httpbin.org/anything', {
      headers: {
        Accept: 'application/json'
      },
      // 基础认证直接使用以下两个参数,无需手动写头
      // username: 'your-username',
      // password: 'your-password'
    })
    console.log('statusCode:', res.statusCode);
    console.log('body:', res.body);
  } catch (error) {
    // 打印错误码可快速定位连接类问题
    console.log('error code:', error.code);
    console.log('error:', error.message);
  }
})();

特殊连接异常处理

如果调整后仍有连接错误,可根据错误码针对性配置:

  • 出现CERT_HAS_EXPIRED/UNABLE_TO_VERIFY_LEAF_SIGNATURE类证书错误:调试阶段可临时关闭证书校验(生产环境不建议开启),配置如下:
    https: {
      rejectUnauthorized: false
    }
    
  • 出现ECONNRESET类重置错误:优先核对代理配置、TLS版本是否和目标服务器匹配,避免got默认的安全限制拦截请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 17:54:03