Flex解决跨域问题的策略文件的写法
2013-06-19 13:03
190 查看
/***************************策略文件 crossdomain.xml***************************/
一、基础解说
用Flash文档访问另一个域中的数据。Flash Player会自动试图从该域加载策略文件。
如果试图访问数据的Flash文档所在的域包括在该策略文件中,则数据将自动成为可访问数据。
策略文件必须命名为 crossdomain.xml,并且可以驻留在服务器的根目录和其它目录之中,这个服务器提供要被访问的ActionScript数据。
每个策略文件对于它所驻留的服务器的端口和协议是特定的,只有在通过HTTP、HTTPS或FTP进行通信的服务器上,策略文件才起作用。
flashplayer升级到9.124之后,加强了安全性,之前的crossdomain.xml的写法发生了变化,以下就是该文件的完整写法:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
表示该服务允许任何外域来访问。
关于crossdomain.xml的放置目录问题,有如下解决方案,可放置在:
1/ 如果这个目录是容器的根目录,可以通过以下的url访问crossdomain.xml:
http://localhost:8080/crossdomain.xml 。
2/ 如果crossdomain.xml不是放在根目录下,而是在某个webapp下面,在flex中就需要在初始化的时候应用
Security.loadPolicyFile("http:// localhost:8080/direc/crossdomain.xml");
其中direc是webapp的名称。
这样,外部Flex访问该服务发布的WebService时,flashplayer首先找的就是crossdomain.xml文件,若安全机制设置为允许访问,则访问成功。
二、详细讲解:
crossdomain.xml的根节点必须是cross-domain-policy:
* 它包含三个子节点:site-control, allow-access-from, allow-http-request-headers-from
* 无属性
节点介绍:
* site-control
* 这个节点定义当前域的meta-policy
* meta- policy决定这个域中除了master policy file以外哪些策略文件可以被client接受
* 如果这个策略文件并不是 master policy file,site-control这个节点就会被忽略。
* 如果你用ActionScript指定使用某个非master policy file的策略文件,你必须先检查master policy file的这个子节点以确认你指定的那个policy file是被授权的。
* site-control的属性permitted-cross-domian-policies有5个选项:
none--任何policy file都不被允许,包括master policy file。
master-only不用解释了。
by-content-type--当HTTP头的Content-Type值为text/x- cross-domain-policy才被允许。
by-ftp-filename--只有以文件名结尾的URL才被允许。
all--不用介绍。
默认值是master-only,除了socket policy file,它的默认值是all。
* allow-access-from
* allow-http-request-headers-from
===============================================
总:
1、 策略文件写法:
Xml代码
<?xml version="1.0"?>
<!-- http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.friendOfAeroflash.org" />
<allow-access-from domain="*.aeroflash.org" />
<allow-access-from domain="123.321.0.1" />
</cross-domain-policy>
2、 通配策略文件(无限制访问):
Xml代码
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
3、 Adobe 强烈不推荐的允许所有资源访问的crossdomain.xml文件:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
From http://flex2.group.iteye.com/group/blog/762692 http://hi.baidu.com/wurongle_1987/blog/item/9130228adf9909739e2fb4ea.html
一、基础解说
用Flash文档访问另一个域中的数据。Flash Player会自动试图从该域加载策略文件。
如果试图访问数据的Flash文档所在的域包括在该策略文件中,则数据将自动成为可访问数据。
策略文件必须命名为 crossdomain.xml,并且可以驻留在服务器的根目录和其它目录之中,这个服务器提供要被访问的ActionScript数据。
每个策略文件对于它所驻留的服务器的端口和协议是特定的,只有在通过HTTP、HTTPS或FTP进行通信的服务器上,策略文件才起作用。
flashplayer升级到9.124之后,加强了安全性,之前的crossdomain.xml的写法发生了变化,以下就是该文件的完整写法:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
表示该服务允许任何外域来访问。
关于crossdomain.xml的放置目录问题,有如下解决方案,可放置在:
1/ 如果这个目录是容器的根目录,可以通过以下的url访问crossdomain.xml:
http://localhost:8080/crossdomain.xml 。
2/ 如果crossdomain.xml不是放在根目录下,而是在某个webapp下面,在flex中就需要在初始化的时候应用
Security.loadPolicyFile("http:// localhost:8080/direc/crossdomain.xml");
其中direc是webapp的名称。
这样,外部Flex访问该服务发布的WebService时,flashplayer首先找的就是crossdomain.xml文件,若安全机制设置为允许访问,则访问成功。
二、详细讲解:
crossdomain.xml的根节点必须是cross-domain-policy:
* 它包含三个子节点:site-control, allow-access-from, allow-http-request-headers-from
* 无属性
节点介绍:
* site-control
* 这个节点定义当前域的meta-policy
* meta- policy决定这个域中除了master policy file以外哪些策略文件可以被client接受
* 如果这个策略文件并不是 master policy file,site-control这个节点就会被忽略。
* 如果你用ActionScript指定使用某个非master policy file的策略文件,你必须先检查master policy file的这个子节点以确认你指定的那个policy file是被授权的。
* site-control的属性permitted-cross-domian-policies有5个选项:
none--任何policy file都不被允许,包括master policy file。
master-only不用解释了。
by-content-type--当HTTP头的Content-Type值为text/x- cross-domain-policy才被允许。
by-ftp-filename--只有以文件名结尾的URL才被允许。
all--不用介绍。
默认值是master-only,除了socket policy file,它的默认值是all。
* allow-access-from
* allow-http-request-headers-from
===============================================
总:
1、 策略文件写法:
Xml代码
<?xml version="1.0"?>
<!-- http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.friendOfAeroflash.org" />
<allow-access-from domain="*.aeroflash.org" />
<allow-access-from domain="123.321.0.1" />
</cross-domain-policy>
2、 通配策略文件(无限制访问):
Xml代码
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
3、 Adobe 强烈不推荐的允许所有资源访问的crossdomain.xml文件:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
From http://flex2.group.iteye.com/group/blog/762692 http://hi.baidu.com/wurongle_1987/blog/item/9130228adf9909739e2fb4ea.html
相关文章推荐
- flex解决跨域问题的策略文件的写法
- Flash/ActionScript 解决跨域问题的策略文件crossdomain.xml的写法
- 自定义Access-Control-Allow-Origin策略以解决字体文件跨域权限问题
- 彻彻底底的解决Flex,as3 缺乏策略文件权限 问题
- 解决ajax不能访问本地文件问题(利用js跨域原理)
- mac上的chrome解决跨域问题(打不开本地文件请求)
- c#读写ANSI格式文件,解决中乱码问题最简单的写法
- java实现附件预览(openoffice+swftools+flexpaper)(解决jsp读取全盘文件问题)
- gulp解决跨域的配置文件问题
- flex关于跨域访问会引起安全沙箱问题,下面是在网上找到的解决安全沙箱问题的方法
- 异步上传文件-跨域问题如何解决
- Flex+Java组合解决汉字或特殊符号(如&等)文件下载时的文件名乱码问题
- Flex缺乏策略文件权限问题
- java linux和windows下文件路径间隔符的写法——解决linux下程序在windows下运行时的上传文件出错问题
- nginx 修改头文件解决 字体跨域问题
- flex 解决上传文件中文名字问题
- flex安全沙箱,跨域访问图片资源问题解决
- flex和socket通信的跨域问题解决方案
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- mongoVUE中collections为空,即文件树无法展开问题的解决策略