IEのGETクエリの最大長制限を思い知る
Internet ExplorerにはURLに使える文字数は2038文字という制限がある。
Amazon E-Commerce Serviceでカートに複数アイテムを追加するときは、Item.1.ASIN=xxxxxxxxxx&Item.1.Quantity=1という形式のパラメータを複数与えなければならない。このリクエストをAjaxでサーバのプログラム経由で送るとき商品の数が多すぎると、このIEのGETの最大長に引っかかってしまう。
Firefoxでは正常に動作するのにIEではなぜか動かなくて、エンコードが原因だろうかとか色々調べた結果、送信しているクエリが長すぎただけだった。
scriptタグを生成してdocument.lastChild.appendChild(script)として、コールバック関数でJSONを処理させたかったのでGETクエリになっていた。POSTなら制限がないはずなので、prototype.jsを使ってPOSTメソッドで送信するようにしてみたのだが、うまくいかなかった。やり方がマズかったかな。それともAjaxでPOST送信する場合にはIEではGETと同じ最大長制限がつくのだろうか?
無理にAjaxでやる必要もないのだが、画面遷移のないアプリケーションにしたいのでこだわっている。
[追伸]
明日(というか今日)は百式 x Yahoo! 主催の忘年会議に参加してきます。そのあとの忘年会ももちろん参加で。
コメントを残す