总是在Apache中发送Content-Length?

Nie*_*sol 9 apache http-content-length

我正在加载一个由PHP动态生成的特别大的JSON字符串.为了向用户提供一些反馈,我想显示下载进度.

我已经找到了代码,它适用于静态内容,如图像,JS文件等.但是,它似乎不适用于动态文件.

这是有道理的,因为动态文件没有可预测的内容长度,但即使我在PHP中添加它:

ob_start(function($c) {
    header("Content-Length: ".strlen($c));
    return $c;
});
Run Code Online (Sandbox Code Playgroud)

它仍然不发送标题(但如果我添加任何其他标题,它工作正常).

有没有办法强制Apache发送Content-Length标题?目前我唯一的选择是将输出保存到临时文件并改为重定向到它.这可行,但它有点混乱,所以我宁愿避免它,如果可能的话.

ger*_*tan 10

我有类似的问题但在我的情况下,Apache没有发送Content-Length头,因为响应是gzip压缩的.当我禁用压缩时,Content-Length被计算并正确发送.

下面是htaccess设置,仅为swf文件禁用gzip压缩

<FilesMatch "\.swf$">
  SetEnv no-gzip 1
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)


Woj*_*ski 0

我最好的猜测是您对 进行了一些更改,modules/http/http_filters因为 Apache 默认发送Content-Length.