2009-07-06 4 views
2

Gravatars를 플래시에로드하려고합니다. 다행히, 그들은 http://en.gravatar.com/avatar/crossdomain.xml 내 코드Flash Crossdomain.xml 문제

에서 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: Error #2123: Security sandbox violation: LoaderInfo.content: [...] cannot access http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon . No policy files granted access.
at flash.display::LoaderInfo/get content()
at PiecePlayerSmall/onLoadComplete()

는 또한 플래시 파일이 트래픽을 모니터링 배상. 그것은 요구하고이를 얻기를위한

어떤 제안 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 I에 의해 유사한 문제를 해결 가지고

+0

내 요청 URL이 현재 도메인에 없으면 어떻게해야합니까? –

+0

현재 도메인이 아니라면 리소스에 액세스 할 권한이 없음을 의미합니다. 이 경우 crossdomain.xml을 수정하려면 몇 가지 해킹 메소드를 인라인해야합니다. –

답변

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); 
+0

그냥 시도해 보니 새 오류 : Error # 2044 : 처리되지 않은 SecurityErrorEvent :. text = 오류 # 2048 : 보안 샌드 박스 위반 : [...]에서 http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon의 데이터를로드 할 수 없습니다. –

+1

그래, 내 문제가 해결 됐어! SecurityDomain을 추가하지 마십시오. 단지 상황을 악화시킵니다. 또한 로더의 내용에 직접 액세스 할 수 없으므로 다른 오류가 발생합니다. –

+0

@ 존 귀하는 어떻게 콘텐츠에 액세스해야합니까? – cregox