0%

2022-12-16 解决 axios 的 http 代理问题

2022-12-16 解决 axios 的 http 代理问题

参考:

Node 环境下 axios 的 proxy 配置 出坑攻略:https://www.jianshu.com/p/8021d8851775

在使用代理前,得先有一个代理,下面以本地的http://127.0.0.1:8101代理为例。

实际上 axios 官方也是有代理配置选项的,但实际使用过后发现并不生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 这样写是不生效的
import axios, { AxiosError } from 'axios'

async function test() {
try {
const response = await axios.get('http://xxxxx', {
proxy: {
host: '127.0.0.1',
port: 8101,
},
timeout: 30 * 1000,
})
console.log(response.data)
} catch (error) {
if (error?.isAxiosError) {
console.error((error as AxiosError).toJSON())
return
}
console.error(error)
}
}

参考 Node 环境下 axios 的 proxy 配置 出坑攻略 的解决方案后,使用 https-proxy-agent 这个包即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import axios, { AxiosError } from 'axios'
import HttpsProxyAgent from 'https-proxy-agent'

const httpsAgent = HttpsProxyAgent('http://127.0.0.1:8101')

async function test() {
try {
const response = await axios.get('http://xxxxx', {
httpsAgent,
proxy:false,
timeout: 30 * 1000,
})
console.log(response.data)
} catch (error) {
if (error?.isAxiosError) {
console.error((error as AxiosError).toJSON())
return
}
console.error(error)
}
}

这样就能正常使用代理了

附录

如果要使用 socks5 协议,只要改成使用 socks-proxy-agent包即可,例如:

1
2
3
import { SocksProxyAgent } from 'socks-proxy-agent'

const httpsAgent = new SocksProxyAgent(`socks5://localhost:8080`);

剩下的就都是一样的了

本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/3a839ef6.html
版权声明:转载请注明出处!

坚持原创技术分享,您的支持将鼓励我继续创作!