JSデータのクロスドメイン参照
2006年12月22日(金曜日)
JSデータのクロスドメイン参照
「Web2.0時代のAjax Binary Hacks (labs.cybozu.co.jp)」。興味深いお話ですね。
スライドに書かれていますが、クロスドメインでデータをやりとりすること自体は難しいことではありません。script要素の src属性には外部のドメインを指定することができるので、任意のデータを含む js ファイルを動的に生成すればあっさり通信できます。そこに着目したのが JSONP で、外部 .js として実行できる形式にすることによって script要素で参照できるようになり、ドメインを超えられるようになったというわけです。
※ふつう、JSON だと XMLHttpRequest を使うのでクロスドメイン参照できません。
※ちなみに、Opera では JSONP による非同期通信がうまくできなかったりするという問題があったりもするようです。
ときどき「JavaScriptはクロスドメインで参照できない」と思っている人がいるようなのですが、それはおそらく XMLHttpRequest の制限と混同しているのだと思います。要注意なのは、JS ファイルは悪意あるサイトからでも普通に読めてしまうということです。つまり、機微な情報を含むような JS ファイルを動的に生成するのはとても危険だということです。
大昔、某所のチャットのサービスは Java Applet で動いていたのですが、わざわざユーザのセッション情報などを含む JS ファイルを動的生成して、その JS から applet要素や param要素を生成していました。そういう作りをしていると、ログイン状態で罠サイトを踏んだときに、セッション情報を含むデータを読まれてしまうことがあり得ます。このような作りはとても危険です。
- 「JSデータのクロスドメイン参照」にコメントを書く
- 前(古い): GBA売り場が縮小?
- 次(新しい): もやしもん4