ローカルプロキシ::Operaで双葉問題

実際にOperaをインストールして確認した。
昨日書いたあれは、どうも双葉の各板*1で発生する問題らしく、トップページは見られた。
ヘッダを比べてみると、どうも『Content-Length』と『Transfer-Encoding: chunked』の両方がないヘッダが返ってきている様で、それはつまりどうやって読み込む長さを決定すればいいんだという事である訳で……。
送信ヘッダを比べてもそんな違いはみられないっぽいし……。どうなんだろ。
ちなみに、Fxでリクエストしたときのヘッダには『Transfer-Encoding: chunked』がついてて、チャンクで送信されてくる。


ちなみに、チャンクで送られてくることを確認しているGoogleでも同じように『Transfer-Encoding: chunked』が欠損(?)しているヘッダが送信されて、受信に失敗し真っ白になる。
『Content-Length』が指定されてる様な、例えばfavicon.icoみたいなのは受信に成功している。両方ともないものはチャンク決めうちで良いのかどうか……?

HTTP/1.0ではContent-Lengthは必須でしょ?

どうもOperaでは、プロキシ経由ではHTTP/1.1を使ってくれない様な感じである。
Content-Lengthが無いと長さが決め得ないが、HTTP/1.0自体が『流して切ればそれで良い』的なプロトコル(HTTP/1.1で長さが必要なのは『Keep-Alive』の為だ)という風な事が書かれてるところが有って、流し終わったら接続切って「終了は切断を以って代えさせていただきます」という感じで通信する、という様な。
Indyは接続断されてる所から読み込もうとするとタイムアウトまで待っちゃうきらいがある様な風であまりやりたくないのだが、『200 ok』が返ってきたら長さが無くても切断されるまで読み込みさせることで対応した。(従来はチャンク指定も長さも無ければ受信自体をスルーするようにしていた。まさかそんな事無いだろうと思ったのだ。)
これで漸くOperaでもGoogleや双葉の板にアクセスが出来た。ううむ。
試してみた感じでは、タイムアウトまで待ってみたりしてはいないようである。Cardinalサイズ単位(0..2^32-1、32ビット) で読み込んでいるが引っかかったりしないだろうか心配である。

*1:例えば、である。