参考:
Node 环境下 axios 的 proxy 配置 出坑攻略:https://www.jianshu.com/p/8021d8851775
在使用代理前,得先有一个代理,下面以本地的http://127.0.0.1:8101
代理为例。
实际上 axios 官方也是有代理配置选项的,但实际使用过后发现并不生效
// 这样写是不生效的
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
这个包即可
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
包即可,例如:
import { SocksProxyAgent } from 'socks-proxy-agent'
const httpsAgent = new SocksProxyAgent(`socks5://localhost:8080`);
剩下的就都是一样的了
- 本文链接: https://wp.cmyr.ltd/archives/resolve-the-http-proxy-issue-of-axios
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
发表回复
要发表评论,您必须先登录。