【解决】charles代理与host污染

mac谈到代理就不得不说神器charles,虽然是神器也有不方便或者不合理的地方。

前言

产品在完成开发后会经过开发测试、冒烟测试、预发布测试,最后才能上线,为了保证测试代码统一,几个环境的代码和配置包括域名必须一致,那么QA在移动端测试时就要配置host、IP共享或者代理,windows上的代理多用Finder,mac下是Charles,正常情况下,我们测试都会很顺利,但有的时候会出现配置和环境的坑,下面详细解释。

举个栗子:【前提:MAC+Charles】

. .
项目域名 www.zwwill.com
线上ip 192.168.1.1
测试ip 192.168.1.2
项目依赖资源域名 st.zwwill.com

*** 重要前提:www.zwwill.comst.zwwill.com的线上IP相同,且由ngnix做rewrite定位 ***

由于我们在测试环境时【项目依赖资】需要使用线上的资源,所以测试环境的ip映射关系应为:

域名 IP
www.zwwill.com 192.168.1.2
st.zwwill.com 192.168.1.1

测试时的host配置为:


host配置

在不做charles代理的情况下此坑触及不到,如果开启了charles,坑就出现了。

坑的模样

控制台信息

奇怪的是,我们的test.js(st.zwwill.com/common/test.js)文件404错误!
看下Charles的record信息:

www.zwwill.com下的文件

www.zwwill.com】指向IP【192.168.1.2】正确!

st.zwwill.com下的文件

【st.zwwill.com】指向IP【192.168.1.2】错误!❌

查查原因

检查完log后发现,Charles的代理模式在处理此重情况下会出现误判!导致同源下的资源也走了重定向,这不是我们想要的结果!

解决方案很简单

既然Charles没有我们想想的这么智能,那我们就找个方法绕过这个坑。
很简单,只需要将【st.zwwill.com】指向我们的线上IP【192.168.1.1】就好。

正确的效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,046评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • Charles简介 Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端...
    Chris_js阅读 8,841评论 0 3
  • 下午上着模电第二节课,五点多的时分,老妈打过电话来。 上着课,第一通没敢接。老妈是不了解这大学的课程安排的,没什么...
    恐血阅读 3,297评论 0 0
  • 当别人误解你的时候 选择一笑而过 当你遇到挫折的时候 选择一笑而过 当你被生活欺骗的时候 选择一笑而过 当工作不顺...
    风中蓝荷阅读 1,664评论 2 2