2010年10月06日(水) [長年日記]
■ [dev][web][net] HTTPのchunkにはまった
分かってしまえばどうということはないが、はまったのでメモ。
ウェブブラウザとウェブサーバの間に割り込んで、HTTP応答の内容を一部変更するプログラムを書いた。が、変更されたHTTP応答を受信したウェブブラウザがHTMLの最初の方しかレンダリングしてくれない。なんでや。
HTTP応答を調べると、間に身に覚えのない数値が挟まっていた。この数値の所でブラウザのレンダリングが中断している。
この数値がTransfer-Encodingがchunkedの場合に付くchunk-sizeフィールドであることはわりとすぐに分かったのだけれど、何故それが付くとレンダリングが中断してしまうのかがなかなか分からなかった。
原因は、HTTP応答の一部を変更したことでchunkのサイズが変わり、chunk-sizeフィールドの値と実際のサイズが不一致になっていたから。応答の変更をchunkのサイズが変わらないように行うことで対処できた。
■ やること
- コンタクト