当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则:
1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接;
2.一个从网上发布的.swf文件是不可以访问本地服务器的;
3.本地未通过认证的.swf文件是不可以访问任何网络资源的;
4.你想跨域访问或者连接低于1024的端口,必须使用一个跨域策略文件;
如果尝试连接未认证的域或者低端口服务,这样就违反了安全沙箱策略,同时会产生一个securityError事件。这些情况都可以通过使用一个跨域策略文件解决,无论是Socket对象还是XMLSocket对象的策略文件,都必须在连接之前通过使用 flash.system.Security.loadPolicyFile()方法载入策略文件,方法如下:
Security.loadPolicyFile("http://www.yanzimen.com/crossdomain.xml");
获得的改策略文件不仅定义了允许的域名,还定义了端口号,如果你不设置端口号,那么Flash Player默认为80端口(HTTP协议默认端口)。在<allow-access-from>标签中可以使用逗号隔开设置多个端口号,下面这个例子就是允许访问80和8080端口。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.yanzimen.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80,8080" />
</cross-domain-policy>