这里基本上是相同的问题: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
这是一个错误吗?我被诅咒了吗?或者阅读文档时遇到了问题?
答案 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....
,这让我哭了好几天。这么蠢的东西。