在actionscript里,如果要从其它域里载入swf或数据的话,或者socket要连接服务端的话,就会遇到这个超贱的安全沙箱.在以下情 况里(抄自as3 cookbook):
1.swf将要连接的服务器,必须与此swf在同一域中;
2.从网络打开的网页中的swf不能连接到本地服务器(废到无耻的话);
3.本地不受信任的swf不能连接任何服务器或载入任何文件.
4.swf被跨域载入了,但是不能用as控制其中的代码:
5.跨域载入变量,不行.
其 中第三个安全规则我很有意见,因为adobe把控制面板放在它自己的网站里,贱得嘀嘀叫.

解决的方法有两个.
这里所说的方法,都是 在被载入的域中进行的,一定注意.[当然了,你得有被载入文件或被连接服务器管理权限]
第一个方 法:
1.如果被载入域是以http的方式来提供服务的,那就可以在被载入swf的as里用 flash.system.Security.allowDomian("允许改变此代码的网域");
2.如果被载入域是以https的方式来提供服务的,那可以在被载入swf的as里用 flash.system.Security.allowInsecureDomai("允许改变此代码的网域");
上面所说,解决的是开头所列 举的第4个安全限制.
第二个方法:
这 个方法比第一个方法更方便的解决了跨域被载入swf里as访问限制,而且还解决了跨域载入网页中的变量的安全问题:写访问域方针文件.
另外这个方法也可以解决socket的跨域连接服务器的安全限制.
如下:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'>
<cross-domain-policy>
<allow-access-from domain="网址或IP" to-ports="80,开放的端口,..." />
</cross-domain-policy>

把 此文件保存为crossdomain.xml放在被载入域的根目录下面,载入变量和访问被载入swf中的as时候,做动作的swf就会自动读取了.
to-ports是个可选参数,如果不写的话,默认的是开放web端口,也就是80.
但是在socket连接 时,不但跨域方针文件要指定端口(因为一般都不会把80做为socket服务器端口),还得在as中明文载入跨域方针文 件:flash.system.Security.loadPolicyFile("跨域方针文件所在路径");
注意了,上面所说的"跨域方针文 件所在路径",可以是在任何目录下面,而且它所能控制的就是所在目录和其子目录,权限不能达到上一层目录.

 先决条件:必须打开843端口

打开843端口.rar