AUでxhmlコンテンツを古い端末で見たとき、ゲートウェイが自動でhdml変換してくれる。このときページのサイズが大きすぎると、ゲートウェイは自動で2ページに分けて表示してくれる。
今日の障害は、AUの古い端末で、アンケート入力フォームからPOSTした結果取得したページが長かったために2ページに分けてくれたのだが、その2ページ目がエラーで表示されないと言うもの。疑問点は二つ。
(1) 2ページ目の表示に必要な引数が渡っていないようだ。なぜ?
(2) 引数が渡っていない場合も処理を用意してるのに、端末エラーになるのはなぜ?
【解決編】
AUのページングは、実は2回リクエストを発生させることにより実現していた、というのが原因。1ページ目のPOSTは成功するが、2ページ目を表示しようとする時は同じURLにGETリクエストを送るため、引数が渡らずにエラーページが返ってくる。ゲートウェイ側では、「1ページ目の続きを表示するために、さっきのリクエストと同じ結果を返して欲しい」と思って動作しているので、エラーページを返されても処理できずに、破綻する。
今回の教訓も、先入観にとらわれずに全てを疑え、ってことで終幕。