Content-Lengthヘッダを仕込んだはずなのに、例えばブラウザにファイルサイズが伝わらなくて、ダウンロード残り推定時間が表示されないとか、ともかくContent-Lengthが機能してない!っとなった場合。
Apacheがgzip圧縮してませんか?
つまり、Apacheのmod_deflateモジュールが動いてませんか?
これに該当する場合の対処法です。
アプリケーション側で設定するので、Webサーバの設定なんていじれないよ、って場合でもオーケイなはず。
もっとも、アプリケーション側からの設定が許可されてない場合も考えられるので、悪しからず。。
・PHPの場合
apache_setenv('no-gzip', '1');
Content-Length header が送信されない|PHP Walker
Apache環境変数に"no-gzip"を立てておくと、mod_deflateモジュールが抑制されるらしい。
らしい、というのは、
Apache モジュール mod_deflate
この記事内に、使用例は書いてあるけど、
「Apache環境変数に"no-gzip"を立てておくと、mod_deflateモジュールが抑制される」
とはどこにも書いてません…。
書いてあるとしたらこのページだと思うのだが…。
まあ、実際のヘッダを見ると変わっていたから、作用しているのは確認できた。
差分をとってみると、下記ヘッダが変わっていた。
mod_deflateモジュールが有効な場合:
Vary に Accept-Encoding が追加。
Content-Encoding が gzip に。
Transfer-Encoding: chunked が追加。
・他言語の場合
「PHPの場合」などと書いてしまったので、これも必要なのだろうけど…
、だろうけど…それぞれの言語でApache環境変数を設定する方法を調べて下さい。。。。。
まあ、ここまででもヒントにはなるでしょう。と自己満足。
ブログなんて自己満足でやるもんだろーーー。
(他言語で実装する機会があったら、そして解決できたら書きまする)
PHP
Comments