Mac版Charles Map Local失效解决办法,解决axios请求报404问题(完整步骤)

问题提出

最近学习React过程中,写axios请求时,需要使用Charles重定向,反复报404错误。通过查阅Charles文档、StackOverflow相似情况回答,完整解决。有同样问题的朋友,可以跟着本文一步步操作,如果依然有问题,欢迎在下方评论区交流!

axios请求代码块:

componentDidMount() {
        axios.get('/api/todolist').then((res) => {
            alert('success');
        }).catch((err) => {
            alert('error');
        });
}

使用Charles Map Loacl重定向:

 

todolist.json文件内容如下,随意写的,很普通:

 

刷新浏览器后报错:

 

查看控制台Network,todolist请求报404错误:

 

查看Charles,没有抓取本地请求,空空如也:

 

问题分析

Charles文档中找到了对Localhost的相关说明,附上链接:https://www.charlesproxy.com/documentation/faqs/localhost-traffic-doesnt-appear-in-charles/

Charles原理是把自身变为一个中间代理服务器,便于抓包。文档大意是某些系统会采用硬编码方式使本地的数据访问不使用代理,导致无法使用Charles重定向。官方给出的解决方案是使用http://localhost.charlesproxy.com/替代localhost。

再来看看StackOverflow上相关回答,附上链接:https://stackoverflow.com/questions/15183108/view-127-0-0-18080-traffic-in-charles-proxy

解决方案与官方给出的相同,使用localhost.charlesproxy.com替代localhost。

 

解决问题

下面根据分析解决此问题。

首先,修改axios代码块中get的url(为什么http://localhost.charlesproxy.com后面要加:3000呢?因为我们使用的是3000端口):

componentDidMount() {
        axios.get('http://localhost.charlesproxy.com:3000/api/todolist').then((res) => {
            alert('success');
        }).catch((err) => {
            alert('error');
        });
}

 

随后,修改Charles中Map Local设置(只需要把Host栏改成localhost.charlesproxy.com即可):

 

然后刷新浏览器(嗯?还是报错):

 

我们来看网页地址:

 

地址还是localhost,需要手动输入新地址localhost.charlesproxy.com:3000

 

问题解决!

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JellyfishMIX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值