ひとりごと

新しい記事:[1277]  古い記事:[1275] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2004/08/15 (日)

・ やっと動いた delegated

何度も書いてるのと、WWWサーバのアクセスログを見ている人にはお分かりの通り、わたしのケータイからインターネットへうろうろするのは自宅サーバで Delegate を画像圧縮PROXYとして動かしてここを経由しています。

で、だいたいはうまく動くのですが、一部のページ(例: http://www.google.co.jp/ T^T)なんかはHTMLの途中でちょん切れてしまうのでうまく表示されません。他のページではだいたい表示されるのと、CFIでの加工は画像のみを対象にしつつブラウザで画像を表示しない設定にしてもおかしくなっていたので、おそらく Delegate のバグであろうとほったらかしにしていました。

で、本日インターネットをうろうろしていますと、こちらのページに答えが載っておりました。一部引用しますと、

問題はcfiを使うとなぜだか
webサーバ     ->     delegate     ->     クライアント
     gzipされたtext/html      伸長されたtext/html
     gzipされたときの        gzipされたときの
     Content-Length:        Content-Length:
というような感じになりました。IEではContent-Lengthを無視するのか正常に表示
されるのだけど、京ぽんオペラでは最後が切れてしまいます。

フムフム、つまり表示できないページってのはWWWサーバからgzipで圧縮して送られるページってことですな。対策としてはDelegateのCFIでgzip圧縮してやると(てゆーか何か加工すると) Content-Lengthが再設定されるのだそうです。

ただ、この設定は過去に試したことがあるのですが、うちの delegated でこれをやると、AirH"電話での表示がはちゃめちゃになっちゃうのですねー。おかしーなー、なにが違うのだろう? と思って元ネタをそのままコピペするとちゃんと動くのです(笑)。うむむむ、なんでー? と思って目を凝らしてよく見るとバグがいました。

Content-Type: text/html
Ouptut-Header: Content-Encoding: gzip
Body-Filter: /usr/bin/gzip --best
ふっ、ヘッダの書き換え行が無効な命令だったからgzipしたかたまりを text/html として表示していたのね・・・。まぬけすぎです(^^;)

そんなわけで、幾つかの表示できないページもちゃんと動くようになりました。今の設定では Content-Type: が text/ で始まらなくて、かつ gzip 圧縮されたページは途中で切れるはずなのですが、そんなのあんまり無いと思うし そもそもAirH電話"では扱えない形式である可能性が極めて高いので、これで良しとしておきましょう。

□ 関連記事

[つっこみ]

新しい記事:[1277]  古い記事:[1275] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)