困った。JavaScript多用なWebプログラミング中、こんなメッセージが。
「Internet explorerは、クロスサイト スクリプトを防止するために、このページを変更しました」
自分でプログラム書いててこんなことを言われるとは思わなかった。
作っていたのは、ページ内のデータを取得、動的に生成したフォームから、サーバーサイドのプログラムにPOSTする、というもの。そのPOSTされたデータを元にWebサービスAPIにアクセスしてデータを取得、それを最終的に表示するのだ。その表示にもJavaScriptを使っている。それが問題になるのだと最初は思われた。
ページ遷移のタイミングでエラーが出る。サーバーサイドプログラムが出力するJavaScriptのコードに問題があるのかと思い、いろいろチェック。あやしいやつを置換してみたらい。どうやら違う模様。POSTするデータの生成で問題があるのだった。
POSTするデータには「’」(シングルクウォート、引用符)が含まれている。それがひっかる。それも警告が出たり出なかったりする。引用符の数によるものかと思ったのだが、そうでもないらしい。この不定っぷりが原因解明を遅らせる。
また、遷移する際のどのタイミングで警告が出ているのかわからなかった(出るときか、入るときか)のも、時間がかかる要因。
ということで、JavaScriptの.replaceで「’」を全角にしといた。確認のための表示にしか使わないのでこれでよしとする。
とりあえず、今回みたいな警告が出たらPOSTするデータにも問題がないか確かめよう。メモ。
ここまでデータを行ったり来たりするプログラムを書いたことがなかったので、思った以上に苦労した。
そういえば、買ってある本も途中までしか読んでいない。時間を作ってなんとか続きを読まなくては。今回みたいな無駄な時間をくってる暇はないのだ。結果として本を読んでおいたほうが今後のためになる。とかいう目論見。
パーフェクトPHP (PERFECT SERIES 3)
コメント