douguaidian8021 2011-09-14 13:41 采纳率: 100%
浏览 2327
已采纳

如何设置正确的内容编码?

我在HTTP-Header:ContentEncoding中有一些严重的(或者更好地说是:奇怪的)问题。

在将内容发送到客户端浏览器之前,我想将其压缩。为此,我正在检查客户端浏览器是否接受gzip,如果接受,则使用ob_start("ob_gzhandler")并设置内容编码: $response->addHeader("Content-Encoding", "gzip"); 我认为我的问题是内容编码头的手动设置。如果我用$response->addHeader("Content-Encoding", "gzip"); 那么内容仅在Opera中显示。 如果我用 $response->addHeader("Content-Encoding", "'gzip'"); th所有浏览器显示的内容都是正确的,但是gzip压缩检查表明它没有被压缩,W3C HTML验证服务无法对页面进行编码:

The error was: Don't know how to decode Content-Encoding ''gzip''

如果我不在线使用 ob_start("ob_gzhandler") 那么该页只能在Opera-我的完整代码行中显示。 在浏览器中进行正确的输出,如下所示:
$accEncoding = $request->getHeader("http_accept_encoding");
if($accEncoding !== NULL && substr_count($accEncoding, 'gzip')) {
    ob_start("ob_gzhandler");
    $response->addHeader("Content-Encoding", "'gzip'");
    $response->addHeader("Vary", "Accept-Encoding");
} else {
    ob_start();
}

我是使用了ob_gz处理程序错误,还是在这里做了其他错误?对于如何正确处理gzip输出,我感到非常困惑。

  • 写回答

1条回答 默认 最新

  • dsy6639 2011-09-14 13:52
    关注

    ob_gzhandler already verifies that the browser supports gzip compression:

    Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return its output accordingly.

    It also sets the Content-Encoding header accordingly.

    Also note that using zlib.output_compression is preferred over ob_gzhandler().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号