FlexのHTTPServiceを使って、他のサイトのRSSを読み込み、リスト表示をしようとした。
最近では、PHPなどでブログの最近記事の一覧をトップページに出力することは、よくやる手法である。
しかし、Flashの世界では、これが単純にはいかない。
通常の処理で、HTTPServiceで他のサイトのxmlファイルにアクセスにいくと、以下のようなエラーが出力される。
[RPC Fault faultString=”URL へのアクセス中にセキュリティエラーが発生しました” faultCode=”Channel.Security.Error” faultDetail=”送信先 : DefaultHTTP”]
つまりは、FlashやFlexではセキュリティ上、他のドメインへのコンテンツは基本的にアクセスできないようになっているらしい。
この場合、接続先に「crossdomain.xml」を置くことで問題を解決することができる。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="(接続元のドメイン)"/> </cross-domain-policy>
少し調べただけだが、ポートなど細かい設定も可能みたい。
これだと、Amazonやぐるなびなどが提供しているAPIも使えないのかな。それとも、もう一工夫必要なんでしょうか。
いつの時代でもセキュリティと利便性のバランスって難しいですね。
コメントする