灯台下暗し -カッターナイフで恐竜を腑分けした記録-

仕事で携帯向けアプリを書いて、趣味で携帯電話を買い、趣味で同人小説を書いて、何もしていません。

S!アプリからの POST で Transfer-Encoding:chunked

2007-08-11 15:42:52 | 携帯電話

8/10 に SoftBank Developers Support Site にて「S!アプリ開発ガイド [端末情報 MIDP 2.0 対応端末編]」が更新されました。

一部端末に、HTTP の POST リクエストでデータを送信する場合のエンコーディングの特徴が制限事項として記載されました。

902T, 903T, 803T, 904T, 705T, 910T, 810T, 811T, 813T, 812T, 911T, 814T, 815T, 912T の場合

  • POST データが 2016Bytes 以上の場合は、自動的にヘッダフィールドオプションを「Transfer-Encoding:chunked」にして送信する
  • POST データが 2016Bytes 以下の場合は、Content-Length を付与して送信する。ただし、flash() をコールした場合はデータサイズによらず chunked 形式で送信する

705P, 706P の場合

  • POST データが 2560Bytes を超える場合、chunked 形式で送信する場合がある。アプリからの flash() のコールの有無には依存しない

これは、S!アプリから Web サーバにデータを送るとき、Web サーバ側のアプリ(CGI 等)が対応しないと送信したデータにゴミが入ってしまいます。

これを欠陥と呼ぶのは自分に Web アプリプログラマとして知識と技術がないと公言しているようなものなので、呼びたくありません。ソフトバンクは受信も chunked 形式に対応しているので、お互い様です。

しかし、手間がかかるのは避けられず、うんざりします。


コメント (4)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 動物が何もいない星で木が倒... | トップ | エラーコードが違うんです »
最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
T系端末からのPOST通信につきまして (kurastar)
2008-09-12 18:33:41
お世話になります。

9/11(木)未明より、東芝端末で2016byte以上のPOST通信を行なったところ、サーバのApacheのエラーログに、chunked Transfer-Encoding forbiddenが吐き出せるようになりました。
この通信は、アプリからのPOST通信となります。

それまでは、正常にPOST通信が行なえており、サーバ側も特にいじっていない状態です。

何か解決方法をご存知でしょうか?
可能であれば、WEBサーバ側の修正のみで完結できればと考えております。
急なご質問で大変恐縮ですが、ご教授頂ければ幸いです。
返信する
Unknown (katsuhiromihara)
2008-09-14 21:20:10
> 可能であれば、WEBサーバ側の修正のみで完結できればと考えております。

WEB サーバ側の修正でできることは、

・Transfer-Encoding: chunked に対応することはできます
・Transfer-Encoding: chunked を止めさせることは、おそらく、できません

なので、サーバ側ソフトが Transfer-Encoding: chunked に対応するしかないです。

Transfer-Encoding: chunked の詳しい形式と、お使いの環境でのパース手順は確認しましたでしょうか。その確認から始めるのがいいと思います。
返信する
Apache 1.3.xx の mod_proxy は Transfer-Encoding: chunked と相性が悪いらしい (katsuhiromihara)
2008-09-14 21:44:20
検索してみると、次の記事が見つかりました。

Axis2 と mod_proxy (古いやつ) は仲が悪い?
http://ls-al.jp/blog2/category_14/item_990.html

Apache 1.3.33 の mod_proxy は Transfer-Encoding: chunked を扱えなくて、解決策は Apache のバージョンを上げること(本文中には書かれていませんが、多分 2.0.xx 以降)だそうです。
返信する
もしかしたら Apache 2.2.xx 以降でないと駄目かも (katsuhiromihara)
2008-09-14 21:55:12
> 多分 2.0.xx 以降

適当なことを書いちゃいました。

Apache のドキュメントを読むと、
mod_proxy に chunked の解説があるのは 2.2.xx 以降です。2.0.xx と 1.3.xx には chunked の解説がありません。

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
http://httpd.apache.org/docs/1.3/mod/mod_proxy.html
返信する

コメントを投稿

携帯電話」カテゴリの最新記事