在开发彼此通讯的一系列 SWF 文件时(例如,在使用 loadMovie()
、MovieClip.loadMovie()
、MovieClipLoader.LoadClip()
或本地连接对象时),可以在不同的域中承载影片,或者在一个超域的不同子域中承载影片。
在以 Flash Player 5 或更低版本为目标播放器发布的文件中,对跨域或子域访问没有限制。
在以 Flash Player 6 为目标播放器发布的文件中,可以使用 LocalConnection.allowDomain
处理函数或 System.security.allowDomain()
方法指定允许的跨域访问(例如,让 someOtherSite.com 上的文件可以访问 someSite.com 上的文件),并且不需要执行任何命令就允许子域访问(例如,store.someSite.com 上的文件可以访问 www.someSite.com 上的文件)。
对于以 Flash Player 7 为目标播放器发布的文件,其实现 SWF 文件间访问的方式有两点与早期版本不同。首先,Flash Player 7 实现完全域匹配规则,而不是超域匹配规则。因此,所访问的文件(即使该文件是以早于 Flash Player 7 的 Player 版本为目标播放器发布的)必须显式允许跨域或子域访问;在下文将讨论这一主题。其次,在某一使用安全协议 (HTTPS) 的站点承载的文件必须显式允许从使用不安全协议(HTTP 或 FTP)的站点承载的文件的访问;在下一节中将讨论这一主题(请参见SWF 文件之间的 HTTP 到 HTTPS 协议访问)。
因为 Flash Player 7 实现完全域匹配规则,而不是超域匹配规则,所以,如果您希望从以 Flash Player 7 为目标播放器发布的文件访问现有脚本,则可能需要修改这些脚本。(您仍可以 Flash Player 6 为目标播放器发布这些修改后的文件)。如果您在文件中使用了任何LocalConnection.allowDomain()
或 System.security.allowDomain()
语句并且指定了允许的超域站点,则必须更改参数以改为指定完全域匹配。以下代码显示您可能要进行的几类更改的示例:
// 位于 www.anyOldSite.com 的 SWF 文件中的 Flash Player 6 命令 // 要允许由在 www.someSite.com // 或在 store.someSite.com 承载的 SWF 文件访问 System.security.allowDomain("someSite.com"); my_lc.allowDomain = function(sendingDomain) { return(sendingDomain=="someSite.com"); } // 允许由以 Flash Player 7 为目标播放器发布的 SWF 文件 // 访问的相应命令 System.security.allowDomain("www.someSite.com", "store.someSite.com"); my_lc.allowDomain = function(sendingDomain) { return(sendingDomain=="www.someSite.com" || sendingDomain=="store.someSite.com"); }
如果您当前没有使用如下语句,可能还需要将这些语句添加到您的文件中。例如,如果您的 SWF 文件承载在 www.someSite.com 中并且想要允许由 store.someSite.com 上以 Flash Player 7 为目标播放器发布的 SWF 文件访问该文件,则必须将如下语句添加到 www.someSite.com 上的文件(您仍可以 Flash Player 6 为目标播放器发布 www.someSite.com 上的文件)。
System.security.allowDomain("store.someSite.com"); my_lc.allowDomain = function(sendingDomain) { return(sendingDomain=="store.someSite.com"); }
总之,如果您以 Flash Player 7 为目标播放器发布满足以下条件的文件,则可能需要修改文件以添加或更改 allowDomain
语句:
loadMovie()
、MovieClip.loadMovie()
、MovieClipLoader.LoadClip()
或本地连接对象)。您需要进行以下更改:
System.security.allowDomain
或 LocalConnection.allowDomain
,并且使用完全域名匹配。System.security.allowDomain
或 LocalConnection.allowDomain
语句,并且使用完全域名匹配,如本节前面部分的代码示例所示。您可以以 Flash Player 6 或 Flash Player 7 为目标播放器发布该修改后的文件。System.security.allowDomain
语句,并且使用完全域名匹配,如本节前面部分的代码示例所示。(在 Flash Player 5 或更低版本中不支持 LocalConnection 对象)。