请教一个 Nodejs 的网络请求问题。

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

请教一个 Nodejs 的网络请求问题。

我使用 nodejs 去请求一个 api 地址,这个地址需要翻&&墙。 我挂上代理后,浏览器和 postman 都能请求到数据,nodejs 就是请求不到数据,一直是要么是 connect ETIMEDOUT 要么是 confuse。 nodejs 使用的是 axios 作为请求库,也试过 request,两个都不能请求到数据。 请教一下各位大神,这个可能是什么原因呀。

13 回复

首先你挂的什么代理,有在代码里指名用什么代理吗


使用的 socket 代理,代码里面没有指明用代理。是否一定要在代码里面指定代理?

我刚出来收快递了,我回去试一下


大神你好

情况有了变化但是数据还是没有获取到;
axios response 里面的 status 是 200,statusText 是 Connection established ;
但是 data 还是没有数据,这个情况我还真没遇到过,能否指导一下,谢谢

最好把代码贴出来吧,光这样说不知道什么问题

this.axiosInstance.defaults.proxy = false; this.axiosInstance.defaults.httpsAgent = tunnel.httpsOverHttp({ proxy: { host: proxyHost, port: proxyPort } });

npm tunnel。需要上代理隧道

是不是你的代理是 SOCKS5 协议的,看上去那个库不支持。

谢谢大神,成功了。这个代理隧道是什么意思呀?

客气了。原理我也不太懂,只是以前遇到过同样的问题

我也遇到了这个问题, 楼主可以贴个示例吗? 用的 axios 的版本是多少?
我发现有些网站不会走代理,例如下面的 baidu.com

<br>axios.defaults.proxy = false;<br>axios.defaults.httpsAgent = tunnel.httpsOverHttp({<br> // 随便设置个错误的端口也能成功,实际上没走代理<br> proxy: { host: "127.0.0.1", port: "7777" }<br>});<br><br>axios<br> .get("<a target="_blank" href="http://baidu.com" rel="nofollow noopener">http://baidu.com</a>")<br> .then(function(response) {<br> console.log("Response with axios was ok: " + response.status);<br> })<br> .catch(function(error) {<br> console.log(error);<br> });<br>

当然,很高兴帮助你解决 Node.js 的网络请求问题。在 Node.js 中,常用的库来进行网络请求是 axios 和 Node.js 自带的 httphttps 模块。这里我会展示如何使用 axios 库来进行一个基本的 GET 请求,以及如何处理错误和响应数据。

首先,你需要安装 axios 库。如果你还没有安装,可以通过 npm 安装:

npm install axios

然后,你可以使用以下代码来进行一个 GET 请求:

const axios = require('axios');

const url = 'https://api.example.com/data';  // 替换成你的目标URL

axios.get(url)
  .then(response => {
    console.log('响应数据:', response.data);
  })
  .catch(error => {
    if (error.response) {
      // 服务器响应了一个状态码,且状态码在2xx之外
      console.error('错误响应:', error.response.data);
      console.error('状态码:', error.response.status);
      console.error('响应头:', error.response.headers);
    } else if (error.request) {
      // 请求已经发出,但没有收到响应
      console.error('无响应:', error.request);
    } else {
      // 在设置请求时发生了错误
      console.error('错误:', error.message);
    }
  });

这段代码展示了如何使用 axios 发送一个 GET 请求,并处理可能的错误和响应数据。你可以根据需要修改 URL 和处理逻辑。如果你需要发送 POST 请求或其他类型的请求,axios 同样提供了相应的方法,比如 axios.post()。希望这能帮助你解决问题!

回到顶部