卡巴斯基浏览器插件和http header content-encoding: gzip

很早之前,我就通过 apache 的 mod_deflate 开启了网站的 gzip 传输,然后就没再管了,当然,这玩意儿开着谁也不会去管,几年过去了……直到今天,我在调试一个网站插件的时候,通过 Firefox web developer 突然发现——我的网站居然不支持 gzip 传输了!

网页没有gzip

第一反应,当然是登录服务器,检查 apache 设置,看是不是服务器自动更新的时候覆盖掉了我的设置——并没有。

第二反应,逐条检查 apache 设置,看是不是软件更新了以后,有的设置冲突或者不能用了——并不是。

第三反应,检查服务器上静态内容的 http header。比如 http://www.onepx.com/robots.txt,服务器返回 header —— Content-Encoding: gzip !

同时,我也注意到 js 和 css 文件都正常的通过 gzip 传输,因为文件的 size 和 trasferred size 明显差很多,检查它们的 http header,看到服务器返回 Content-Encoding: gzip. 所以,问题出在动态内容上,php-fpm?这下就绕远了,检查 php.ini,寻求压缩 .php 文件的方法,zlib.output_compression?——都不对。

用 chrome 浏览器的开发者工具检查 header,还是没有 gzip。

我甚至用虚拟机重新搭建了一套 apache + php-fpm ——还是不能 gzip 动态页面。

脑子开始不够用的我打开在线的 gzip 压缩检测工具做测试,出人意料的得到了下面的结果:

网址 www.onepx.com 检测结果
是否压缩:是
压缩类型:gzip
原始文件大小:63801字节
压缩后文件大小:14182字节
压缩率(估计值):77.77%

哈?我凌乱了……起身踱步……走到老婆的电脑面前……换台电脑试试?

开机——打开chrome——F12——www.onepx.com——Content-Encoding: gzip!

电脑问题!OMFG!我们两个电脑有啥区别?

第一反应,我的电脑比她的快!

第二反应,她的 Chrome 浏览器还是我装的!

第三反应,我的电脑有卡巴斯基——那个上管天下管地中间还要管空气的卡巴斯基安全软件!

Kaspersky protection

没错,就是卡巴斯基安全软件,安装它的时候,它同时会给浏览器装一个叫做“Kaspersky protection”的插件,作用是检查你访问的网站是否危险,是否有一些搜集隐私的东西。每当它遇到开启了 gzip 传输的动态网页,它领先浏览器一步,率先 unzip 数据包,看看有没有什么不好的东西,不好的——拦截掉,好的——把数据传给浏览器。然而这个时候,浏览器得到的数据,已经解过压缩包了,自然看不到“Content-Encoding: gzip”。

所以,我的服务器一点问题都没有,apache 也一直在给我传输 gzip 之后的数据,我所做只需要打开电脑的控制面板,卸载卡巴斯基安全软件——浪费我大半天!

LAMP

Email: i at onepx dot com || QQ: ⑧九零三④幺 || 微信: onepxcom
©2019 一像素 蜀ICP备13026576号-2 技术支持:成都网站建设