YUI3を使って、Javascriptから外部ドメインにPOSTリクエストをする
なんでわざわざそんなことをするのかはさておき、
YUI3を使って、Javascriptから外部ドメインにPOSTリクエストをしてみた。
主に障害となるのが、クロスドメイン問題。
この問題を回避するために、色々な手順や準備が必要なので、
備忘録として残しておく。
環境の準備として、用意するのは以下の2つ
例えば、1.はレンタルサーバ上のWebサーバ(http://example.com/api.php)、
2.は、ローカルにたてたWebサーバ(http://localhost/foo.html)、など。
この環境で、foo.htmlから、api.phpに対してPOSTでデータを送信する。
このときに、foo.htmlの中に、
<form action="http://example.com/api.php" method="post">
とは書いてはいけない、という縛りを設ける。
なんでそんな縛りを設けるか、というと、
http://example.com/api.phpは、データの更新APIという位置づけで、
ページの表示処理をいれたくない。成功か失敗かだけを判定するAPIとして
存在したい。ページの表示処理は、http://localhost/foo.htmlの役割、
http://example.com/api.phpはデータのCRUD操作をする役割として
明確にわけたいからである。
というわけで、foo.htmlからjavascriptをつかって、外部ドメインに対して
データをPOSTしなければいけない、というわけ。
で、結論としては以下の手順でできました。
2.に関しては、YUI3のサンプルページにあるので、ダウンロードしておく。
foo.htmlと同一のドメインから参照できるようにしておかないとだめ。
で、3.のコードはこちらを参考にどうぞ。
セキュリティ?なにそれ、うまいの?
って感じですが、やりたいことが実現できたので、よしとす。
YUI3を使って、Javascriptから外部ドメインにPOSTリクエストをしてみた。
主に障害となるのが、クロスドメイン問題。
この問題を回避するために、色々な手順や準備が必要なので、
備忘録として残しておく。
環境の準備として、用意するのは以下の2つ
- APIサーバ
- javascriptからデータをPOSTするクライアント
例えば、1.はレンタルサーバ上のWebサーバ(http://example.com/api.php)、
2.は、ローカルにたてたWebサーバ(http://localhost/foo.html)、など。
この環境で、foo.htmlから、api.phpに対してPOSTでデータを送信する。
このときに、foo.htmlの中に、
<form action="http://example.com/api.php" method="post">
とは書いてはいけない、という縛りを設ける。
なんでそんな縛りを設けるか、というと、
http://example.com/api.phpは、データの更新APIという位置づけで、
ページの表示処理をいれたくない。成功か失敗かだけを判定するAPIとして
存在したい。ページの表示処理は、http://localhost/foo.htmlの役割、
http://example.com/api.phpはデータのCRUD操作をする役割として
明確にわけたいからである。
というわけで、foo.htmlからjavascriptをつかって、外部ドメインに対して
データをPOSTしなければいけない、というわけ。
で、結論としては以下の手順でできました。
- http://example.com/crossdomain.xmlを設置
- http://localhost/以下にYUI3が提供するio.swfを置く
- YUI3を用いて、http://localhost/foo.htmlを以下のように記述する
2.に関しては、YUI3のサンプルページにあるので、ダウンロードしておく。
foo.htmlと同一のドメインから参照できるようにしておかないとだめ。
で、3.のコードはこちらを参考にどうぞ。
セキュリティ?なにそれ、うまいの?
って感じですが、やりたいことが実現できたので、よしとす。