Axios:通过代理请求https

时间:2019-05-04 09:06:20

标签: javascript axios

这里基本上是相同的问题:axios: https request over proxy

我正在使用浏览器。以下代码由webpack编译。 我尝试了这个:

const axios = require('axios');

var res = await axios.get('https://api.ipify.org?format=json', {
    proxy: {
        host: 'proxy-url',
        port: 80,
        auth: {username: 'my-user', password: 'my-password'}
    }
});
console.log(res.data); // gives my ip and not the proxy's one

我也使用相同的代码尝试了此操作,但仍然无法正常工作:

const axios = require('axios-https-proxy-fix');

然后,我尝试使用httpsAgent:

const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent')

var agent = new HttpsProxyAgent('http://my-user:my-pass@proxy-url:port');
var res = await axios.get('https://api.ipify.org?format=json', {
    httpsAgent: agent,
});
console.log(res.data); // gives my ip and not the proxy's one

这是一个错误吗?我被诅咒了吗?或者阅读文档时遇到了问题?

5 个答案:

答案 0 :(得分:1)

axios's github page上存在一个未解决的问题。

此问题从3月31日起被标记为错误,并且尚未解决。

所以看来您并没有受到诅咒,而只是axios中的错误。

您可以将您的详细信息添加到该线程中,以便开发团队确定此问题的优先级。

万一您迫不及待要解决此问题,可以考虑使用fetch API,如评论中建议的@Sumi Straessle。

答案 1 :(得分:0)

axios的config.proxy仅是Node.js。我认为在浏览器中没有意义。

您可以检查lib/adapters/xhr.js并在那里找不到与代理相关的任何信息。

答案 2 :(得分:0)

如果您要使用axios并解决该问题,请考虑使用link

中所述的https-proxy-agent作为代理
    const HttpsProxyAgent = require("https-proxy-agent"),
      axios = require("axios");

const httpsAgent = new HttpsProxyAgent({host: "proxyhost", port: "proxyport", auth: "username:password"})

//use axios as you normally would, but specify httpsAgent in the config
axios = axios.create({httpsAgent});

答案 3 :(得分:-1)

如果您尝试通过HTTP代理访问HTTPS URL,则需要创建HTTPS-HTTP隧道。

我在此帖子https://janmolak.com/node-js-axios-behind-corporate-proxies-8b17a6f31f9d中找到了解决此问题的方法。现在可以正常使用了!

答案 4 :(得分:-3)

如果您使用的是 MERN 堆栈应用程序,请尝试此

Express 服务器正在侦听端口 5000 在您的 React 应用程序的 package.json

像这样添加`"proxy": "http://localhost:5000/"

 "scripts": {
    .....
    ....
  },

  "proxy": "http://localhost:5000/"
  ,

  "eslintConfig": {
    .....
    ...
  },

在向您的 API 发出请求时,例如获取用户数据

const fetchUser = (userId) => {
    
     const res = await axios.get(`/api/users/${userId}`)
     console.log(res.data)
}

PS:别忘了/中的/api/users....,这让我哭了好几天。这么蠢的东西。