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

2020-02-12 18:30:01 +08:00
 morelearn1990

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

6999 次点击
所在节点    Node.js
12 条回复
newlifeinsc
2020-02-12 18:31:50 +08:00
首先你挂的什么代理,有在代码里指名用什么代理吗
ayase252
2020-02-12 18:33:33 +08:00
用 proxy 属性指定使用的代理,https://github.com/axios/axios#request-config
morelearn1990
2020-02-12 18:34:09 +08:00
使用的 socket 代理,代码里面没有指明用代理。是否一定要在代码里面指定代理?
morelearn1990
2020-02-12 18:34:58 +08:00
我刚出来收快递了,我回去试一下
morelearn1990
2020-02-12 20:34:44 +08:00
@ayase252 @newlifeinsc
大神你好

情况有了变化但是数据还是没有获取到;
axios response 里面的 status 是 200,statusText 是 Connection established ;
但是 data 还是没有数据,这个情况我还真没遇到过,能否指导一下,谢谢
newlifeinsc
2020-02-12 21:07:27 +08:00
最好把代码贴出来吧,光这样说不知道什么问题
yuang
2020-02-12 22:17:22 +08:00
this.axiosInstance.defaults.proxy = false; this.axiosInstance.defaults.httpsAgent = tunnel.httpsOverHttp({ proxy: { host: proxyHost, port: proxyPort } });
yuang
2020-02-12 22:18:47 +08:00
npm tunnel。需要上代理隧道
muzuiget
2020-02-13 01:23:11 +08:00
是不是你的代理是 SOCKS5 协议的,看上去那个库不支持。
morelearn1990
2020-02-13 08:35:36 +08:00
@yuang 谢谢大神,成功了。这个代理隧道是什么意思呀?
yuang
2020-02-13 09:46:04 +08:00
@morelearn1990 客气了。原理我也不太懂,只是以前遇到过同样的问题
rabbbit
2020-03-02 13:39:31 +08:00
我也遇到了这个问题, 楼主可以贴个示例吗? 用的 axios 的版本是多少?
我发现有些网站不会走代理,例如下面的 baidu.com

```
axios.defaults.proxy = false;
axios.defaults.httpsAgent = tunnel.httpsOverHttp({
// 随便设置个错误的端口也能成功,实际上没走代理
proxy: { host: "127.0.0.1", port: "7777" }
});

axios
.get("http://baidu.com")
.then(function(response) {
console.log("Response with axios was ok: " + response.status);
})
.catch(function(error) {
console.log(error);
});
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644091

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX