[转]连接到不同域中的SWF文档

http://hi.baidu.com/gklchocolate/blog/item/6553f6b57e84487f8bd4b2c4.html

要只允许从特定域进行通信,可以调用 LocalConnection 类的 allowDomain() 或
allowInsecureDomain() 方法,并传递包含允许访问此 LocalConnection 对象的一个或多个域的列表。
在早期版本的 ActionScript 中, LocalConnection.allowDomain() 和
LocalConnection.allowInsecureDomain() 是必须由开发人员实现的、且必须返回布尔值的回调方法。在 ActionScript 3.0 中, LocalConnection.allowDomain() 和
LocalConnection.allowInsecureDomain() 都是内置方法,开发人员可以像调用
Security.allowDomain() 和 Security.allowInsecureDomain() 那样调用这两个内置方法,传递要允许的一个或多个域的名称。
可以向 LocalConnection.allowDomain() 和 LocalConnection.allowInsecureDomain()
方法传递两个特殊值:* 和 localhost。星号值 (*) 表示允许从所有域访问。字符串
localhost 允许从本地安装的 SWF 文件调用 SWF 文件。
Flash Player 8 对本地 SWF 文件引入了安全限制。可以访问 Internet 的 SWF 文件还不能访问本地文件系统。如果指定 localhost,则任何本地 SWF 文件都可以访问 SWF 文件。
如果 LocalConnection.send() 方法试图从调用代码没有访问权限的安全沙箱与 SWF 文件进行通信,则会调度 securityError 事件 (SecurityErrorEvent.SECURITY_ERROR)。要
解决此错误,可以在接收方的 LocalConnection.allowDomain() 方法中指定调用方的域。
如果仅在同一个域中的 SWF 文件之间实现通信,可以指定一个不以下划线 (_) 开头且不指定域名的 connectionName 参数(例如 myDomain:connectionName)。在
LocalConnection.connect(connectionName) 命令中使用相同的字符串。
如果要实现不同域中的 SWF 文件之间的通信,可以指定一个以下划线开头的
connectionName 参数。指定下划线使具有接收方 LocalConnection 对象的 SWF 文件更易于在域之间移植。下面是两种可能的情形:
■ 如果 connectionName 字符串不以下划线开头,则 Flash Player 会添加一个包含超级域名称和一个冒号的前缀(例如 myDomain:connectionName) 。虽然这可以确保您的连接不会与其它域中具有同一名称的连接冲突,但任何发送方 LocalConnection 对象都必须指定此超级域(例如 myDomain:connectionName)。如果将具有接收方 LocalConnection
对象的 SWF 文件移动到另一个域中,Flash Player 会更改前缀,以反映新的超级域(例如 anotherDomain:connectionName)。必须手动编辑所有发送方 LocalConnection 对象,以指向新超级域。
■ 如果 connectionName 字符串以下划线开头(例如 _connectionName),Flash Player 不会向该字符串添加前缀。这意味着接收方和发送方 LocalConnection 对象都将使用相同的 connectionName 字符串。如果接收方对象使用 LocalConnection.allowDomain() 来指定可以接受来自任何域的连接,则可以将具有接收方 LocalConnection 对象的 SWF文件移动到另一个域,而无需更改任何发送方 LocalConnection 对象。

你可能感兴趣的:(Security,Blog,Flash,actionscript)