crossdomain.xml 文件可以包含以下元素:
cross-domain-policy
cross-domain-policy元素是跨域策略文件的根元素。它是一种策略文件定义容器,没有自己的属性。
特性 |
详细信息 |
父元素 |
无;cross-domain-policy 是根节点 |
子元素 |
- site-control
- allow-access-from
- allow-access-from-identity
- allow-http-request-headers-from
|
属性(无)
site-control
site-control元素用于定义当前域的元策略。元策略则用于指定可接受的域策略文件,且该文件不同于目标域根元素(名为 crossdomain.xml)中的主策略文件。
如果客户端收到指示使用主策略文件以外的策略文件,则该客户端必须首先检查主策略的元策略,以确定请求的策略文件是否获得许可。
属性
属性 |
详细信息 |
permitted-cross-domain-policies |
指定元策略。除套接字策略文件外,所有策略文件的默认值均为 master-only,套接字策略文件的默认值为 all。允许的值包括:
- none: 目标服务器上的任何位置(包括这个主策略文件)均不允许使用策略文件。
- master-only: 仅允许这个主策略文件。
- by-content-type: [HTTP/HTTPS only] 仅允许 Content-Type:text/x-cross-domain-policy 提供的策略文件。
- by-ftp-filename: [FTP only] 仅允许文件名为 crossdomain.xml(即以 /crossdomain.xml 结尾的 URL)的策略文件。
- all: 允许此目标域中所有策略文件。
|
allow-access-from
allow-access-fromallow-access-from 元素用于授权发出请求的域从目标域中读取数据。尽管通过使用通配符 (*),一个 allow-access-from 元素可以为多个域授予访问权限,每个获得许可的请求都需要使用一个新的allow-access-from元素。
domain |
指定要授予访问权限的发出请求的域。命名域和 IP 地址值均为可接受的值。子域将被视作不同的域。通配符 (*) 单独使用时可用于表示所有域,在用作以句点 (.) 分隔的明确二级域名前缀时表示多个域(子域)。表示单个具体域时需要使用单独的 allow-access-from 元素 要授予不具备任何相关域的请求文档(如本地文件)的访问权限,必须在域属性中指定 "*" 通配符。这样即可允许访问任意来源的任意请求文档。不过,我们不建议授予没有任何相关域的文档的访问权限,只有确保策略文件不包含任何具有访问权限控制的个性化或私人数据时才能授予 "*" 访问权限。 |
to-ports |
[Sockets only] 以逗号分隔的端口列表,或者允许连接到套接字连接的一系列端口。端口范围通过在两个端口号之间插入短划线 (-) 指定。端口范围在用逗号隔开时则可以用于指代单个端口。一个通配符 (*) 可用于表示允许所有端口。 |
secure |
[HTTPS and Sockets only,optional] 指定仅授予指定来源的 HTTPS 文档的访问权限 (true),还是授予指定来源的所有文档的访问权限 (false)。 如果 HTTPS 策略文件中未指定 secure,则默认为 true。不建议在 HTTPS 策略文件中使用 false,因为这会影响 HTTPS 的安全性。 在套接字策略文件中,默认值为 false。只有当套接字服务器接受本地主机连接时,指定 secure=”true” 才有意义,因为本地套接字连接通常不会面临中间人攻击的风险,因此无法更改 secure=”true” 声明。 |
allow-access-from-identity
allow-access-from-identity元素根据加密凭据授予权限,而allow-access-from则截然不同,它根据来源授予权限。迄今为止,定义的唯一机制是允许访问由给定方(该方由证书指定)进行数字签名的所有文档。
Signatory: 确定签名方。每个 allow-access-from-identity 元素仅允许具有一个此类元素。 |
Signatory
Onesignatory使用一个 signatory 元素包含 certificate 元素。
特性 |
allow-access-from-identity |
certificate: 确定签名方证书。每个 signatory 元素仅允许具有一个此类元素。 |
certificate
使用一个 signatory 元素包含 certificate 元素。
属性
certificate元素必须包含两个属性:
fingerprint-algorithm |
这个哈希算法用于计算证书指纹。该属性值不区分大小写。目前定义的唯一哈希算法名称是 sha-1,但也可以根据实施需要定义其他算法名称。 |
fingerprint |
签名证书的指纹,用十六进制字符串表示。该属性值不区分大小写,并且可以包含空格或冒号,但会遭到忽略。在 sha-1 哈希算法中,fingerprint 必须包含 40 个十六进制数字。 |
注意:Flash Player 不支持 allow-access-from-identity 元素。
allow-http-request-headers-from
allow-http-request-headers-from元素用于授权发出请求的域中的请求文档将用户定义的标头发送到目标域。而 allow-access-from 元素旨在授权从目标域提取数据。这个标签授权以标头的形式推送数据。
指定要授予访问权限的的域。命名域和 IP 地址值均为可接受的值。子域将被视作不同的域。通配符 (*) 单独使用时可用于表示所有域,在用作以句点 (.) 分隔的明确二级域名前缀时表示多个域。表示单个域时需要使用单独的 allow-access-from 元素。 |
headers |
以逗号分隔的标头列表,表示允许发送的请求域。通配符 (*) 可用于准许所有标头或头后缀,从而支持以相同字符开头但以不同字符结尾的标头。 |
[HTTPS only,optional] 如果设置为 false,则表示允许 HTTPS 策略文件授权访问 HTTP 源发出的请求。默认值为 true,表示仅提供 HTTPS 源权限。我们不推荐使用 false。 |