Flex安全砂箱ソリューション


開発中に安全な砂箱の問題に遭遇しました.いくつかの解決策があります.
1.
プレイヤーは8.0以上でワイルドカードを使用できます.rdquo; を使用して、すべてのドメインを許可します.
System.security.allowDomain("*");
複数のドメインを許可する場合は、カンマで区切ります.
System.security.allowDomain("www.windshow.com", "windshow.com", "player.windshow.com");
2.flexについてドメイン間で画像を読み込む
例えばあなたのサーバーのことを
www.myserver.com flexファイルは
www.myserver.com /flex/myfalsh.swf
お客様がこのmyfalshにアクセスするとswfファイルあなたのこのファイルはまた行きます
www.otherserver.com/img/1.jpgここでこの画像をflashにロードします
どうしよう?最も簡単な方法はvar l:loader=new loaderです.l.load(new urlrequest(""));この方法では、flashがローカルディレクトリに直接配置されて実行されている場合は、
サーバーにロードすると、すぐに安全な砂箱の衝突を報告します.
loaderのloadを見る方法load(request:
.chm::/langref/flash/net/URLRequest.html]URLRequest , context:
.chm::/langref/flash/system/LoaderContext.html]LoaderContext = null):
.chm::/langref/specialTypes.html#void]void
context:
.chm::/langref/flash/system/LoaderContext.html]LoaderContextこれは何に使いますか?ヘルプが実行ドメインを設定し、セキュリティポリシーファイルをロードするかどうかを設定するために使用されていたことを確認します.
もちろん使用方法はvar lcです.
.chm::/langref/flash/system/LoaderContext.html]LoaderContext = new
.chm::/langref/flash/system/LoaderContext.html]LoaderContext (true);
var l:loader = new loader; l.load(new urlrequest(""),lc);これでいいですか.同じようにだめだ
また、セキュリティポリシーファイルを相手サーバのルートディレクトリの下に置く名前は次のとおりです.
crossdomain.xmlはこの名前でコードを書くのを省いたほうがいいです.
内容は


 
だから、このような方法には大きな弊害があります.相手のサーバーにこのようなファイルを置くことです.他の人はあなたにあげることができますか?バカじゃないか
3.エージェントを使う方法はasp、phpなどの似たようなプログラムでこの画像を読んでflexに伝えることだと思います.
具体的にはgetpicのように1つ置きます.aspはサーバ上とmyfalsh.swf同じディレクトリ
getpic.aspのコードは
<%

function reReader(url) 
dim http
set http = server.CreateObject("Microsoft.XMLHTTP") 
with http 
.Open "get", url, false, "", "" 
.Send 
reReader = .ResponseBody
end with 

set http = nothing 
end function
dim url
url =Request.QueryString("url")
response.Clear
Response.ContentType = "image/gif"
Response.BinaryWrite reReader(url)
response.End 
%>


myfalsh.swf種のコードはこのように書きます
private var _loader:Loader;
private var _LoadUrl:String;
public function FileLoader(url:String){
    _LoadUrl = url;
    _loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,OnLoadCompleateEvent);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,OnLoadIOErrorEvent);
        }
        
        //  
public function Load():void{
    var req:URLRequest = new URLRequest(_LoadUrl);
    _loader.load(req);
}
        
public function get content():DisplayObject{
            return _loader.content;
        }
        
private function OnLoadCompleateEvent(e:Event):void{
this.dispatchEvent(new Event(Event.COMPLETE));
        }
        
private function OnLoadIOErrorEvent(e:IOErrorEvent):void{
    Alert.show("    ");
            //this.dispatchEvent(new Event(IOErrorEvent.IO_ERROR));
        }

呼び出し方法
  FileLoader(http://www.myserver.com/flex/myfalsh.swf?url=http://www.otherserver.com/img/1.jpg);
4.BlaseDSの場合のソリューション
        result="ResultHandleYellow(event)"endpoint="http://109.111.4.123:8080/SNUMSUNG/messagebroker/amf">
   

endpointのIPアドレスをサーバのIPアドレスに変更