FLEX(ActionScript3.0)でクロスサイトスクリプティング対策を回避。
MooMoo-ya.comトップページをアグリゲータ機能とレイアウトデザインのみにしてコンテンツを完全に別サイト*1におくようにしようと考えたので、こんな感じでRSSを取得しようと目論んだものの失敗。
ちなみにFLEX 3 SDK (ActionScript 3.0)。
private function get(url:String):void { content.text = ""; var loader:URLLoader = new URLLoader(new URLRequest(url)); loader.addEventListener(Event.COMPLETE, onComplete); } private function onComplete(eventObject:Event):void { content.text = eventObject.target.data; }
こんなエラー。
Error #2044: ハンドルされていない securityError : text=Error #2048: セキュリティサンドボックス侵害 :(以下URL)
FLASHのクロスサイトスクリプティング対策に引っかかったのだろうと思ったものの良い回避策が思い浮かばず(JSONPは使いたくなかったので、JavaScript嫌いだし)。
冷静に考えたら今使っているトップページがPHPで問題なく読み込めているのだからPHP経由で読み込めば無問題と気づいたので以下のスクリプトを経由して読み込んだら成功しました。
<?php print file_get_contents($_GET['url']); ?>
サーバへのリクエストが1回増えるので激しいアクセス(連続自動リクエストとか)を行うような処理では使えませんが、普通の画面表示ならたぶん問題ないでしょう。