문제

선언과 프로그래밍 방식의 Swfloader 사이의 보안 측면의 차이점은 무엇입니까? FF에서. Code, Loader1은 보안 예외를 던지고 Loader2는 그렇지 않습니다.

public someFunction(source:String):void
{
  var loader1:SWFLoader = new SWFLoader();
  loader1.load(source);

  loader2.source = source;
}

...

<mx:SWFLoader id="loader2"/>
도움이 되었습니까?

해결책

나는 보안 측면에서 어떤 차이가 있다고 생각하지 않습니다. mxml은 actionscript로 변환됩니다 MXMLC 실제 컴파일이 시작되기 전에 컴파일러가되므로 선언적 Swfloader (또는 그 문제에 대한 다른 선언 요소)는 손으로 코딩하는 대신 무언가를 만드는 짧은 방법 일뿐입니다. 당신은 사용할 수 있습니다 -compiler.keep-generated-actionscript MXMLC 인수 MXML에서 어떤 종류의 코드가 생성되는지 확인합니다.

그리고 당신이 loader2.source = source; 이 예에서는 이전 코드 행이 오류를 호출하므로 해당 함수의 실행이 중지된다는 것입니다. 당신이 전화하는 줄을 댓글을 달아보십시오 loader1.load(source) 다음 줄은 이런 종류의 보안 장치를 던지는 것을 볼 수 있습니다.

SecurityError: Error #2148: SWF file http://example.com/test.swf cannot access local resource file:///Users/username/Desktop/picture.jpg. Only local-with-filesystem and trusted local SWF files may access local resources.
    at flash.display::Loader/_load()
    at flash.display::Loader/load()
    at mx.controls::SWFLoader/loadContent()
    at mx.controls::SWFLoader/load()
    at mx.controls::SWFLoader/commitProperties()
    at mx.core::UIComponent/validateProperties()
    at mx.managers::LayoutManager/validateProperties()
    at mx.managers::LayoutManager/doPhasedInstantiation()
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.core::UIComponent/callLaterDispatcher2()
    at mx.core::UIComponent/callLaterDispatcher()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top