Frage

Was ist der Unterschied in Bezug auf die Sicherheit zwischen deklarativen und programmatische SWFLoaders? Im ff. Code, loader1 wirft eine Sicherheitsausnahme während loader2 nicht.

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

  loader2.source = source;
}

...

<mx:SWFLoader id="loader2"/>
War es hilfreich?

Lösung

Ich glaube nicht, gibt es einen Unterschied in Bezug auf die Sicherheit. Denken Sie daran, wird MXML in Actionscript durch die konvertiert mxmlc Compiler vor dem eigentlichen Zusammenstellung beginnt, so eine deklarative SWFLoader (oder jedes andere deklarative Element, was das betrifft) ist nur eine kurze Hand Art und Weise etwas statt der Schaffung Kodierung es von Hand. Sie können das -compiler.keep-generated-actionscript mxmlc Argument verwenden, um zu sehen, welche Art von Code aus Ihrer MXML erzeugt wird.

Und der Grund Du nicht einen Laufzeitfehler aus der loader2.source = source; Linie in diesem Beispiel ist zu sehen, dass die vorherige Codezeile da einen Fehler aufruft, die Ausführung dieser Funktion stoppt dort. Versuchen Sie, die Linie zu kommentieren, wo Sie loader1.load(source) anrufen und Sie werden die nächste Zeile werfen diese Art von Security sehen:

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top