策略文件包含单个
<cross-domain-policy> 标签,该标签又包含零个或多个
<allow-access-from> 标签。每个
<allow-access-from> 标签包含一个属性
domain,该属性指定一个确切的 IP 地址、一个确切的域或一个通配符域(任何域)。可采用下列两种方式之一来指示通配符域:
后缀必须以点开头。但是,带有后缀的通配符域可以匹配那些只包含后缀但不包含前导点的域。例如,xyz.com 会被看作是 *.xyz.com 的一部分。IP 域规范中不允许使用通配符。
下面的示例显示了一个 URL 策略文件,该文件允许访问源自 *.example.com、www.friendOfExample.com 和 192.0.34.166 的 SWF 文件。
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*.example.com" />
<allow-access-from domain="www.friendOfExample.com" />
<allow-access-from domain="192.0.34.166" />
</cross-domain-policy>
如果您指定了一个 IP 地址,则将只向使用 IP 语法从该 IP 地址(例如 http://65.57.83.12/flashmovie.swf)加载的 SWF 文件授予访问权限,而不向使用域名语法的 SWF 文件授予访问权限。Flash Player 不执行 DNS 解析。
您可以允许访问来自任何域的文档,如下面的示例所示:
<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
每个 <allow-access-from> 标签还具有可选的 secure 属性,其默认值为 true。如果您的策略文件在 HTTPS 服务器上,并且要允许非 HTTPS 服务器上的 SWF 文件从 HTTPS 服务器加载数据,则可以将此属性设置为 false。
将 secure 属性设置为 false 可能会危及 HTTPS 提供的安全性。特别是将此属性设置为 false 时,会使安全内容受到电子欺骗和窃听攻击。Adobe 强烈建议不要将 secure 属性设置为 false。
如果要加载的数据在 HTTPS 服务器上,但是加载数据的 SWF 文件在 HTTP 服务器上,Adobe 建议将加载数据的 SWF 文件移至 HTTPS 服务器。这样,可以使安全数据的所有副本得到 HTTPS 的保护。但是,如果决定必须将要执行加载的 SWF 文件保存在 HTTP 服务器上,则需将 secure="false" 属性添加到 <allow-access-from> 标签,如以下代码所示:
<allow-access-from domain="www.example.com" secure="false" />
另一种可用于允许访问权限的元素是
allow-http-request-headers-from 标签。此元素授权客户端(此客户端承载其他权限域的内容)向您的域发送用户定义的标头。
<allow-access-from> 标签授权其他域提取您域中的数据,而
allow-http-request-headers-from 标签授权其他域将数据以标头的形式发送到您的域中。在下面的示例中,任何域都可以向当前域发送 SOAPAction 标头:
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="SOAPAction"/>
</cross-domain-policy>
如果 allow-http-request-headers-from 语句存在于主策略文件中,它将应用于主机上的所有目录。否则,它只应用于包含此语句的策略文件所在的目录和子目录。