问题描述前段时间偶尔有同事反映某个页面会崩溃。几率极低且无规律!我自己试了一下,果然!没有问题!问题无法复现,所以不重视。直到有一天,我在测试的时候,也遇到了页面崩溃的情况。页面是用vue实现的。崩溃后,vue模板代码全部暴露!奇怪的是,刷新后页面又恢复正常了。真让人头疼。问题定位之初,我不会用PC去调试手机页面(我没有开发手机端的经验)。后来查了相关资料,发现使用USB+Chrome可以在PC上调试手机(安卓)页面。这样问题就简单了。首先打开页面查看具体的异常输出,如图:调试时发现在chrome的网络部分,我请求的axios+vue文件,反馈的不是预期的内容,而是一个bunchofothercodes:提取和格式化后:根据这段代码,我明白了为什么图3中会出现异常:UncaughtTypeError:Cannotreadproperty'appendChild'ofundefined首先,我的axios+vue文件的脚本放在在head标签中,浏览器加载这个标签的时候,body元素还没有构造好!但是比较尴尬的一点是,这两个文件注入后,返回的js脚本内容中有这么一行代码document.getElementsByTagName('body')[0].appendChild(l)。怎么可能追加成功!查明真相为了搞清楚这个鬼东西到底想注入什么,我决定结合使用和写到body里面,让这个鬼东西成真。修改后的效果如图:此时页面不会再报错了。调试发现注入的脚本在页面中添加了蓝色箭头所指的两个script标签,并注入了一个iframe(红框内容里面)。至此,真相大白!解决方案我使用的解决方案是将我们的http链接更改为https。虽然已知其他疑点是“注射”引起的,但注射的来源尚未确定。我刚刚在线检查了注入内容中的“网站管理员统计信息”。但目前尚不清楚这个流氓东西是如何做到的。在此,希望知道内情的朋友帮忙解答,万分感谢!
