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
版权声明:转载请注明出处!