Node.js 应用发送 HTTP 请求的代理设置

August 03, 2020

在 Node.js 中发送 HTTP 请求,根据宿主机的网络环境设置,可能需要设置不同的代理。

在开发机上,外网默认不开放,访问外网全部需要走代理。访问内网时会返回 HTTP 状态码 403,提示禁止通过代理访问内网,需要配置 no_proxy 白名单。 按照提示设置后,使用 curl 访问就能通了。但是在 Node.js 应用中依然无法访问。

问题的原因在于 curl 访问不走代理,Node.js 应用默认走了代理(此处和具体的请求客户端有关,这里用的是 axios)。解决方案是在开发机环境,需要手动设置不走代理。查阅资料后发现在请求的 config 中设置 proxy 为 false 即可。因为每个请求都需要,所以应该封装一个公共的请求方法。

{
    proxy: false,
}

在办公网的本地机器上,需要通过代理访问公司内外网资源,所以需要走代理。也是通过 proxy 设置 ip 和端口:

{
    proxy: {
        host: '127.0.0.1',
        port: 9000,
    }
}

参考链接: 参考了文档和相关 issue pr


Profile picture

Written by xiaohai who lives and works in ShenZhen, building useful things.