nmtysh.log

Tech系のネタや日々の独り言などを書いています。

CakePHP と Content-Length と imodeブラウザ(未解決)

携帯電話(いわゆるFP:フィーチャーフォン)向けの、Webサイトを構築中な訳だが、Cookieが使えない下位端末への対応に悪戦苦闘中。

 

Cookieが使えない場合はセッション情報を引き継ぐ手段としてURLにセッションIDを付与するわけだが、このセッションIDの付与処理で悩まされている。

 

session.use_trans_sid を 1 にするとセッションIDの付加が行われるが、このタイミングが問題。

どうも CakePHP の処理が終わった後に変換しているようで、 CakePHP で Content-Length ヘッダーが設定されたあとにセッションIDの付加が行われている。

どういう事かというと、IDがURLに付加されるとその分コンテンツのデータ量が増えるわけだが、Content-Lengthは元のまま。つまり実際よりも小さい値になってしまう。

 

そのため、Content-Lengthを見て律儀に処理してしまうブラウザだと(それが悪いわけではないが)、コンテンツが最後まで表示されないという問題が起こってしまう。

 

セッションIDが付与されないようにすればこの問題は起こらないわけだが、そうすると今度はセッション情報が引き継がれなくなってしまう。

あるいは「接続が中断されました」というエラーメッセージが表示される。

 

さらにややこしいのが構築しているサイトの全ページで、ページの表示ができない問題が起きないところ。

一部のページでのみ起こっている。共通なレイアウトファイルを使っているのだからどのページでも起こって良さそうなんだが…

 

ままならぬ。

 

2013/06/30 追記:

解決方法を見つけたので別記事に書きました!

session.use_trans_sid を使わずに CakePHP 2.3 でURLにセッションIDを付与する方法