一、基础解说
用 Flash 文档访问另一个域中的数据。Flash Player 会自动试图从该域加载策略文件。如果试图访问数据的 Flash 文档所在的域包括在该策略文件中,则数据将自动成为可访问数据。
策略文件必须命名为 crossdomain.xml,并且可以驻留在服务器的根目录和其它目录之中,这个服务器提供要被访问的 ActionScript 数据。每个策略文件对于它所驻留的服务器的端口和协议是特定的,只有在通过 HTTP、 HTTPS 或 FTP 进行通信的服务器上,策略文件才起作用。
flashplayer升级到9.124之后,加强了安全性,之前的crossdomain.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/aaa /crossdomain.xml");
其中aaa为webapp的名称
这样,外部Flex访问该服务发布的WebService时,flashplayer首先找的就是crossdomain.xml文件,若安全机制设置为允许访问,则访问成功。
二、详细讲解:
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
===============================================
Adobe 强烈不推荐的允许所有资源访问的crossdomain.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>
三、举例:
1、下面的代码是一个策略文件,它允许从 aeroflash.org 上的 Flash 文档访问来自 aeroflash.org、 www.friendOfAeroflash.org、*.www.aeroflash.org 和 123.321.0.1 的 Flash 文档:
<?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 version="1.0"?>
<!-- http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
分享到:
相关推荐
ASP.NET Core微服务(三)——【跨域配置】——对应练习demo(跨域)
跨域策略文件 Silverlight
flash跨域访问策略。渗透测试时检查crossdomain.xml配置信息,应当重点检查allow-access-from=*、allow-http-request-headers-from=*、site-control=allow将会导致漏洞。特别注意参数为*和all,当站内没有cross...
跨域策略文件crossdomain,放至服务器IIS根目录
js 调用 webservice服务,出现的跨域问题,可通过在服务端修改web.config来解决服务端的跨域问题
flex for arcgis java tomcat环境不能跨域问题 网上找了很多都不能解决我的问题,后来看帮助文档,提供了思路,希望能帮助同样被问题困扰的人。
此demo是用于java HttpURLConnection跨域传送图片文件和图片,模拟火狐浏览器,对zip文件进行解压,对图片进行加logo 水印,缩略等处理。其中系统兼容性需要进一步完善,急需要积分,所以先分享了。 ...
能够完美解决arcgis js跨域解决问题,该文档详细说明了.NET或者java环境下跨域解决
pdfjs跨域加载文件预览。亲测可以用。在SSM框架中实现的。但是原理是通用的 详情查看http://blog.csdn.net/u013132051/article/details/76066920
ssm跨域问题解决方案
跨域策略文件提供服务 专注于(但不限于)IRC 环境 Xtreme Flash Policy Server,虽然它被设计为与 LightIRC (http://www.lightirc.com/) 结合使用,但它适用于许多其他只要满足 Adobe 规范,就需要通过网络...
解决tomcat在IP 和端口不同时引起的跨域问题,解决方案,通过编写crossDomain.xml文件
Geoserver解决Tomcat跨域问题所需要的文件,亲测有效。如问题没有得到解决,可以私信给我,看到私信后我会及时回复
解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开<ArcGIS Server> \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...
tomcat解决跨域访问问题,具体配置如下: 1、修改tomcat下的Conf/web.xml文件,在该文件内容中新增以下配置,注意,若该web.xml中存在其它filter,则需要将该filter放在所有filter前面; <filter-name>...
file协议导致的跨域问题以及解决方案.docx
使用nginx进行服务器管理,经常会遇到跨域问题,此文档就是解决此类问题; nginx跨域问题,解决多端口,多ip问题
框架完美解决了iframe之间的跨域通讯。底层技术采用window.name转换代理实现
前端跨域问题解决