今天群里收到大量反馈,对外提供互联网访问的应用的内容展示都乱码了。经过排查发现,发现在内网访问是正常的,而通过互联网访问,用IE浏览器或者火狐是正常的,但用Chrome浏览器访问却是乱码。
这就有意思了,不同浏览器的表现还不一样,那应该跟浏览器设置编码格式的方式有关。
Chrome浏览器上的内容是乱码,查看其返回的响应头中Content-Type已经设置了编码格式为UTF-8。接着下载Chrome的插件Charset,查看页面的编码格式却为GBK,然后修改页面的编码格式为UTF-8,内容正常显示。
这里就有问题了,Chrome浏览器并没有按照返回的响应头设置的编码格式来展示,而是采用它自身默认的编码格式GBK。
查阅资料(https://textslashplain/2020/05/15/meta-charset/),可大概知道,Chrome浏览器会在返回的响应头的前1024个字节中寻找是否有设置编码,如果没有,则认为没有专门设置编码格式而采用浏览器默认的编码格式。
这样判断的目的,估计是为了加速网页的渲染速度。而IE浏览器和火狐没有采用这种方式,应该是直接判断整个响应头里面设置的编码格式。
后面经过打听知道,原来昨天晚上有做一次变更,就是在互联网入口的F5上给所有请求的返回响应头里插入了一段js代码,估计是为了数据埋点所用。这段js代码,直接导致了Chrome浏览器在获取响应头的前1024个字节都是这段js代码的内容,从而没办法读取到真正的编码格式而乱码!最后回滚了该变更,乱码问题解决。
更多推荐
记一次有意思的浏览器乱码问题
发布评论