官网说什么要在charles模拟本地数据的时候域名用localhost_charlesproxy_com。(_&.)
然而很不幸的是,我本地localhost_charlesproxy_com::3000本启动不起来项目,所以只能修改react项目的默认域名,在react项目的package.json文件中将原来的"start": “react-scripts start”, 这一句改为"set PORT=3000 HOST=localhost_charlesproxy_com &&react-scripts start",项目的本地启动地址就变成了了localhost_charlesproxy_com::3000。此时再用charles模拟数据就成功了。
Charles cannot configure your proxy settings while it is on a read-only volume. Perhaps you are running Charles from the disk image? If so, please copy Charles to the Applications folder and run it again. Otherwise please ensure that Charles is writable by the current user and try again.
解决:
终端输入后重启
地址栏输入chrome:plugins 回车,勾选需要始终运行的的插件即可 注:chrome v42以上版本,默认关闭npapi插件, 如需始终启用npapi类插件,需先进入chrome:flags/#enable-npapi,启用"启用 NPAPI"后,重启chrome,然后执行上述步骤一、名词解释
A机:请求发起方电脑,如:前端同学的电脑
B机:请求接收方电脑,如:后端同学的电脑
二、 *** 作步骤
1、假设此时A机要跟B机联调B机的本地服务接口: https://api.beidai.com/gateway/route.html?method=beibei.finance.beidai.discover.get ,B机确保自己能通过 https://api.beidai.com/gateway/route.html?method=beibei.finance.beidai.discover.get 访问到自己本机提供的服务;假设此时A机的IP地址为192.168.0.2,B机的IP地址为192.168.0.3,请确保A机能够ping通B机的IP。
2、双方各自打开自己的Charles,
3、B机打开Charles设置项Proxy >Proxy Settings, 然后勾选Enable transparent HTTP proxying ,此时B机的Charles监听的是默认的8888端口。
4、A机打开Charles设置项Tools >DNS Spoofing,新增一条记录将域名api-test.beidai.com(你也可以换一个你喜欢的)解析到192.168.0.103
5、A机打开Charles设置项Tools >Map Remote,新增一条记录将所有查询参数包含method=beibei.finance.beidai.discover.get的请求转发到http://api-test.beidai.com:8888,也就是把所有A机收到的请求都转发到B机的Charles上。
这里需要注意的是,上图中的Map To协议要 选择http协议 ,因为如果你选了https,那么你还要安装B机的Charles证书才能把https请求转发过去,贼麻烦,所以索性就选http就好了。另外一点是 一定要勾选Preserve host in header fields 这个选项,否则你打到B机的请求就是http://api-test.beidai.com:8888而不是http://api.beidai.com了。
这一步你也可以视需求灵活处理,如果你想要把所有的api.beidai.com的请求都转发到B机上,那么你可以在上一步中直接将api.beidai.com解析到192.168.0.103即可,此时所有以http或https开头的api.beidai.com接口请求都会被转发到B机的Charles上。
6、全都配置好以后,A机接受到的method=beibei.finance.beidai.discover.get接口请求就都会被转发到B机上,B机第一次收到请求时会d出“是否允许连接”的d窗,此时毫无疑问要选择“是”,然后B机就应该能够收到A机转发过来的请求了,此时大家就可以愉快地联调了:)
三、写在最后
其实上面的步骤中有很多都可以灵活处理,只要我们明白了HTTP协议只是一堆纯文本发来发去,就可以善用Charles提供的各种强大功能来满足我们的需求了。过程中有任何问题,欢迎留言讨论。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)