Charles录制时为什么抓不到本地localhost的请求?

Designer°之芳 阅读 2

我在用 Charles 做接口调试,开启 Recording 之后发现访问 localhost:3000 的请求完全没被记录到,但手机上的请求却能正常抓包。

我已经确认了代理设置正确,浏览器也走了 Charles 的 8888 端口,而且排除了 HTTPS 证书的问题(因为是 HTTP)。试过重启 Charles 和清空录制列表,还是不行。是不是 Charles 默认不抓本机回环地址的流量?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
IT人娇娇
这个坑我踩过!Charles确实默认不抓localhost的流量,不是设置问题,而是系统网络栈的特性。血的教训啊,当初调试本地API时浪费了半天时间才发现。

解决方法有两个:
1. 改用127.0.0.1代替localhost访问。直接改你的访问地址就行,比如http://127.0.0.1:3000

2. 如果想坚持用localhost,需要在hosts文件加一行:
127.0.0.1 localhost

然后重启Charles(mac下还要sudo killall -HUP mDNSResponder

原理是localhost默认走的是系统loopback接口,不经过代理。改成IP或者修改hosts强制让它走网络栈才会被Charles拦截到。顺便说一句,Fiddler也有这毛病,这帮抓包工具都一个德行。
点赞
2026-03-07 23:11