Player 7r19 kan loade crossdomain filer med vilkårligt navn fra vilkårlig sti:
http://www.macromedia.com/support/documentation/en/flashplayer/7/releasenotes.htmlhttp://www.macromedia.com/devnet/mx/flash/articles/fplayer_security.htmlMen tilbage til player 6 (i hvert fald mellem 6r0 og 6r79).
Din shim swf er bare en helt almindelig swf. Den kan ligge hvor som helst og loades med et almindelig loadMovie kald. For at loadMovie er tilladt på tværs af domæner, skal man bruge System.security.allowDomain(). Efter du har lavet loadMovie må den oprindelige fil kalde funktioner i din loadede shim swf, som igen nu har tilladelse til at lave en socket connection til "eget" domæne. Din shim skal altså instantiere og connecte på din socket - den kan så bare sende det tilbage til din hovedfil. Altså i shim.swf på b.dk:
System.security.allowDomain("
www.a.dk");
var my_socket = new XMLSocket();
function openSocket(host, port, on_xml, on_connect, on_close) {
my_socket.onXML = on_xml;
my_socket.onConnect = on_connect;
my_socket.onClose = on_close;
my_socket.connect(host, port);
}
function closeSocket() {
my_socket.close();
}
I main.swf på a.dk:
System.security.allowDomain("
www.b.dk");
function onXML(xml) {};
function onConnect(s) {};
function onClose(s) {};
loadMovieNum("
http://www.b.dk/shim.swf", 1);
// vent på load
_level1.openSocket("b.dk", 12345, onXML, onConnect, onClose);
Det er i hvert fald en start - prøv om ikke det virker ;)
// Morten Barklund