Flex
SecurityError: Error #2070 - Stage/requireOwnerPermissions()
퍼플린
2010. 3. 8. 19:08
어플리케이션에서 SWFLoader 를 사용하여 다른 도메인의 SWF 파일을 불러올때 나는 에러이다.
분명히 crossdomain.xml 도 확인 했고.. 재밌는건 에러를 무시 하고 나면 정상적으로 로딩이 된다. (이경우는 나만 그런건지도 모른다..)
독립적으로 돌아가는것을 확인 했고.. 스테이지를 왜 엑세스 할수 없다고 하는건지 전혀 감이 안잡혔는데.
구글링을 하던 도중 Embed 된 것들에 문제가 있는경우의 키워드를 획득!
css 부터 뒤지기 시작했다.
Embed 되는것은 어차피 컴파일 단계에서 swf 에 포함되는 것인데.. 왜 그것때문에 에러가 나는지 고민하던중 문제를 찾아냈다.
css 에서 이미지를 불러오면서 라이브러리 swc를 사용한 부분에서 에러가 났다.
보통 css 에서 이미지를 embed 시키는 경우 소스는.
위와 같이 직접 소스에 이미지 경로를 넣게 된다.
플레시에서 스킨을 만들어서 export 해서 사용 하는경우는.
이런식으로 swf의 클래스를 참조해서 가져오게 된다.
두 방식 다 Embed는 되지만 swc 같은 경우에는 라이브러리로 참조되어있어서 아마도 이 값을 다시 한번 찾는게 아닌가 싶다.
참조를 찾기 때문에 스테이지에 엑세스 할 수 없다고 에러가 나지만..
실제로는 Embed 되어있기 때문에 에러를 무시 하게 되면 이미지는 표시 되는 것이 아닌가 싶다.
이 에러는 오늘 처음 만난 에러라서 케이스가 이거 하나 뿐이라 정확한 이유는 아닐수도 있으니 비슷한 경우를 겪은 분이나 왜 저런식으로 문제가 해결 되는지 이유를 아시는 분은 댓글이나 트랙백을 남겨주셨으면 합니다.
SecurityError: Error #2070: 보안 샌드박스 문제가 발생했습니다. 호출자 http://호출된domain/aaa.swf은(는) http://호출한domain/2008.swf이(가) 소유한 스테이지에 액세스할 수 없습니다.
at flash.display::Stage/requireOwnerPermissions()
at flash.display::Stage/addEventListener()
at mx.flash::UIMovieClip/creationCompleteHandler()[E:\dev\flex\sdk\frameworks\projects\flash-integration\src\mx\flash\UIMovieClip.as:2432]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.display::Stage/requireOwnerPermissions()
at flash.display::Stage/addEventListener()
at mx.flash::UIMovieClip/creationCompleteHandler()[E:\dev\flex\sdk\frameworks\projects\flash-integration\src\mx\flash\UIMovieClip.as:2432]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
분명히 crossdomain.xml 도 확인 했고.. 재밌는건 에러를 무시 하고 나면 정상적으로 로딩이 된다. (이경우는 나만 그런건지도 모른다..)
독립적으로 돌아가는것을 확인 했고.. 스테이지를 왜 엑세스 할수 없다고 하는건지 전혀 감이 안잡혔는데.
구글링을 하던 도중 Embed 된 것들에 문제가 있는경우의 키워드를 획득!
css 부터 뒤지기 시작했다.
Embed 되는것은 어차피 컴파일 단계에서 swf 에 포함되는 것인데.. 왜 그것때문에 에러가 나는지 고민하던중 문제를 찾아냈다.
css 에서 이미지를 불러오면서 라이브러리 swc를 사용한 부분에서 에러가 났다.
보통 css 에서 이미지를 embed 시키는 경우 소스는.
.PanelTypeApp { borderSkin: Embed(source="../images/panelType01.png", scaleGridTop="171",scaleGridLeft="21",scaleGridRight="267",scaleGridBottom="180"); }
위와 같이 직접 소스에 이미지 경로를 넣게 된다.
플레시에서 스킨을 만들어서 export 해서 사용 하는경우는.
.PanelType1 { borderSkin: Embed(skinClass="Panel_borderSkin01"); }
이런식으로 swf의 클래스를 참조해서 가져오게 된다.
두 방식 다 Embed는 되지만 swc 같은 경우에는 라이브러리로 참조되어있어서 아마도 이 값을 다시 한번 찾는게 아닌가 싶다.
참조를 찾기 때문에 스테이지에 엑세스 할 수 없다고 에러가 나지만..
실제로는 Embed 되어있기 때문에 에러를 무시 하게 되면 이미지는 표시 되는 것이 아닌가 싶다.
이 에러는 오늘 처음 만난 에러라서 케이스가 이거 하나 뿐이라 정확한 이유는 아닐수도 있으니 비슷한 경우를 겪은 분이나 왜 저런식으로 문제가 해결 되는지 이유를 아시는 분은 댓글이나 트랙백을 남겨주셨으면 합니다.