策略文件包含单个
<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
语句存在于主策略文件中,它将应用于主机上的所有目录。否则,它只应用于包含此语句的策略文件所在的目录和子目录。