2

Gravatar を Flash にロードしようとしています。幸いなことに、彼らは crossdomain.xml ファイルをhttp://en.gravatar.com/avatar/crossdomain.xml

私のコード:

Security.loadPolicyFile("http://en.gravatar.com/avatar/crossdomain.xml");
var loader:Loader = new Loader();
loader.load(new URLRequest("http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon"));

しかし、私はまだこのエラーが発生しています:

SecurityError: エラー #2123: セキュリティ サンドボックス違反: LoaderInfo.content: [...] http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identiconにアクセスできません。アクセス権が付与されたポリシー ファイルはありません。
flash.display::LoaderInfo/get content()
で PiecePlayerSmall/onLoadComplete() で

また、Flash ファイルが送信しているトラフィックも監視しました。それは要求しています:

これを機能させ、gravatar.com へのリクエスト数を減らすための提案。

編集: ジェイコブのおかげで、次のコードが機能します

Security.loadPolicyFile("http://en.gravatar.com/avatar/crossdomain.xml");
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;
var request:URLRequest = new URLRequest(
    "http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon");
var loader:Loader = new Loader();
loader.load(request, context);
this.addChild(loader);

注: Event.COMPLETE 内のコンテンツに直接アクセスしようとしないでください。

4

1 に答える 1

7

LoaderContextを使用して、同様の問題を回避しました。これを行う方法の例を次に示します。

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
var request:URLRequest = new URLRequest(
    "http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon");
var loader:Loader = new Loader();
loader.load(request, context);
于 2009-07-07T07:42:53.713 に答える