本文出处:http://blog.csdn.net/chaijunkun/article/details/53690305,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。
笔者平时做一些web项目,在开发时非常喜欢使用Chrome浏览器。启动速度快、对CSS、JS标准化的支持和方便的F12工具成为了不二的调试工具。
我的开发方案是将各个不同的环境设置为不同的域名,如下表所示:
环境名称 | 主机地址 | 域名 |
---|---|---|
本地调试 | 127.0.0.1 | test.biz.domain.com |
测试机联调 | 10.168.10.24 | test.biz.domain.com |
线上环境 | DNS解析 | biz.domain.com |
面临的问题
这种方案经常带来的问题:当我手动修改c:\windows\system32\drivers\etc\hosts或者/etc/hosts,尝试切换本地调试和测试机联调环境时经常出现Chrome无法立即生效的情况,请求会依旧打到之前的环境中。当然早期有一种土办法:重启Chrome。如果你当前浏览器中打开了好多网页,而且都暂时不能关时,你会很抓狂。后来通过查阅资料,只需要对Chrome相关的缓存清除掉即可,百试不爽:
清除套接字缓存
在Chrome中打开地址:
chrome://net-internals/#sockets
看到类似如下界面:
分别点击第一个Close idle sockets(关闭空闲套接字)和第二个Flush socket pools(清空套接字池)
清除DNS缓存
在Chrome中打开如下地址:
chrome://net-internals/#dns
看到类似如下界面:
点击Clear host cache(清除主机缓存)。此时再次刷新想要调试的页面,请求将按照最新的hosts配置进行发送。
清除强制使用HTTPS缓存
在某些线上业务系统中,会强制使用HTTPS协议。假设有一业务系统:
https://account.xxx.com
会在响应头增加如下配置:
Strict-Transport-Security: max-age=31536000; includeSubDomains
即表示:告诉浏览器,在接下来的31536000秒内(1年),对于当前域名及其子域名的后续通信应该强制性的只使用HTTPS,直到超过有效期为止。即:使用HSTS(HTTP Strict Transport Security)。
此时,你要使用该系统的测试环境。其域名与线上一致(设置了host),但测试环境不支持HTTPS。当你试图在地址栏直接输入如下地址时:
http://account.xxx.com
系统会自动跳转到HTTPS协议下,然后就提示无法连接等问题。
粗暴的解决办法就是清除浏览器缓存。有没有更优雅的办法呢?你可以在Chrome中打开如下地址:
chrome://net-internals/#hsts
在最后找到“Delete domain security policies”,输入要禁止跳转回https的域名后,点击“Delete”即可。如下图所示:
参考资料:https://blog.csdn.net/u014311799/article/details/79037717