【发布时间】:2009-05-13 08:43:54
【问题描述】:
我似乎无法在任何地方找到答案。众所周知,某些版本的 IE6 和更早版本错误地声明它们接受 gzip 编码。 ob_gzhandler 是否正确检测到这些版本,还是需要单独检测?
【问题讨论】:
标签: php internet-explorer gzip cross-browser
我似乎无法在任何地方找到答案。众所周知,某些版本的 IE6 和更早版本错误地声明它们接受 gzip 编码。 ob_gzhandler 是否正确检测到这些版本,还是需要单独检测?
【问题讨论】:
标签: php internet-explorer gzip cross-browser
不,它没有;你必须像这样:
<?
function checkIEFail() {
$ua = $_SERVER['HTTP_USER_AGENT'];
if(strpos($ua, 'Mozilla/4.0 (compatible; MSIE ') !== 0 || strpos($ua, 'Opera') !== false)
return false;
$version = floatval(substr($ua, 30));
return $version < 6 || ($version == 6 && strpos($ua, 'SV1') === false);
}
if(!checkIEFail())
ob_start('ob_gzhandler');
?>
【讨论】:
!== 0 和 !== false 的使用让我困惑了几分钟!这不是最易读的代码,但我很确定它可以工作。知道有多少百分比的浏览器会匹配这个测试吗?我想知道它是否足够低以至于不再支持它?