Flash 文档可通过使用以下某种数据加载调用方法从外部源加载数据:XML.load()、XML.sendAndLoad()、LoadVars.load()、LoadVars.sendAndLoad()、loadVariables()、loadVariablesNum()、MovieClip.loadVariables()、XMLSocket.connect() 和 Macromedia Flash Remoting (NetServices.createGatewayConnection)。另外,SWF 文件可以在运行时导入运行时共享库 (RSL) 或另一个 SWF 文件中定义的资源。默认情况下,数据或 RSL 必须与加载该外部数据或媒体的 SWF 文件驻留在同一个域中。
若要使运行时共享库中的数据和资源可用于其它域中的 SWF 文件,应使用跨域策略文件。跨域策略文件是一个 XML 文件,该文件提供的方法可以使服务器指示其数据和文档可用于从某些域或所有域提供的 SWF 文件。服务器的策略文件指定的域所提供的所有 SWF 文件都将被允许访问该服务器中的数据、资源或 RSL。
如果您加载外部数据,即使不想将任何文件移植到 Flash Player 7 中,也应创建策略文件。如果您使用 RSL,并且调用或被调用文件是以 Flash Player 7 为目标播放器发布的,则应创建策略文件。
允许跨域数据加载
当 Flash 文档试图访问另一个域中的数据时,Flash Player 将自动试图从该域加载策略文件。如果试图访问数据的 Flash 文档所在的域包括在该策略文件中,则数据将自动成为可访问数据。
策略文件必须命名为 crossdomain.xml,并且可以驻留在服务器的根目录和其它目录之中,该服务器提供具有其它 ActionScript 的数据。只有在通过 HTTP、HTTPS 或 FTP 进行通信的服务器上,策略文件才起作用。策略文件特定于它所驻留的服务器的端口和协议。
例如,位于 https://www.macromedia.com:8080/crossdomain.xml 的策略文件只适用于在端口 8080 通过 HTTPS 对 www.macromedia.com 进行的数据加载调用。
此规则的例外情况是,使用 XMLSocket 对象连接到另一个域中的套接字服务器。如果是这种情况,运行于与套接字服务器所在的同一个域中端口 80 上的 HTTP 服务器必须提供该方法调用的策略文件。
XML 策略文件包含单个 <cross-domain-policy> 标签,该标签又包含零个或多个 <allow-access-from> 标签。每个 <allow-access-from> 标签包含一个属性 domain,该属性指定一个确切的 IP 地址、一个确切的域或一个通配符域(任何域)。通配符域由单个星号 (*)(匹配所有域和所有 IP 地址)或后接后缀的星号(只匹配那些以指定后缀结尾的域)表示。后缀必须以点开头。但是,带有后缀的通配符域可以匹配那些只包含后缀但不包含前导点的域。例如,cenfun.com 可以看作是 *.cenfun.com 的一部分。IP 域规范中不允许使用通配符。
如果您指定了一个 IP 地址,则将只向使用 IP 语法从该 IP 地址(例如 http://65.57.83.12/flashmovie.swf)加载的 SWF 文件授予访问权限,而不向使用域名语法加载的 SWF 文件授予访问权限。Flash Player 不执行 DNS 解析。
下面的示例显示一个策略文件,该策略文件允许从 cenfun.com 上的 Flash 文档访问来自 cenfun.com、www.friendOfcenfun.com、*.cenfun.com 和 105.216.0.40 的 Flash 文档:
<?xml version="1.0"?>
<!-- http://www.cenfun.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.friendOfcenfun.com" />
<allow-access-from domain="*.cenfun.com" />
<allow-access-from domain="105.216.0.40" />
</cross-domain-policy>
您也可以允许访问来自任何域的文档,如下面的示例所示:(http://www.cenfun.com/crossdomain.xml )
<?xml version="1.0"?>
<!-- http://www.cenfun.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
每个 <allow-access-from> 标签还具有可选的 secure 属性。secure 属性默认为 true。如果您的策略文件在 HTTPS 服务器上,并且要允许 HTTP 服务器上的 SWF 文件从 HTTPS 服务器加载数据,则可以将此属性设置为 false。
将 secure 属性设置为 false 可能会危及 HTTPS 提供的安全性。
如果您正在下载来自 HTTPS 服务器的 SWF 文件,而加载它的 SWF 文件在 HTTP 服务器上,则您需要为 <allow-access-from> 标签添加 secure="false" 属性,如下面的代码所示:
<allow-access-from domain="www.cenfun.com" secure="false" />
不包含任何 <allow-access-from> 标签的策略文件相当于服务器上没有策略。
分享到:
相关推荐
flash跨域访问策略。渗透测试时检查crossdomain.xml配置信息,应当重点检查allow-access-from=*、allow-...特别注意参数为*和all,当站内没有crossdomain.xml时将不允许flash跨域访问。不会导致漏洞
flash跨域crossdomain 设置项使用,直接可用允许全部跨域请求
跨域访问数据,获取JSON数据,XML数据
你需要获取其他网站的数据吧,ajax跨域获取数据帮你实现。
jQuery使用ajax跨域获取数据
解决Cesium访问数据跨域问题,数据使用tomcat部署在服务器上。
Linux中的geoserver安装,直接把geoserver.war放到tomcat/webapps下即可; geoserver默认是不允许跨域访问的,如果要允许跨域访问,请按以下步骤操作: (已在geoserver 2.12.5下亲测可用)
$(document).ready(function() { $.ajaxf.install('/Files/zsea/AJAX.swf'); $("#fdemo_get").click(function() { $.ajaxf.getText("http://www.youku.com/", '...$("#fdemo").val(r);...获取数据" id='fdemo_get' />
因为cookie在跨域的情况下,浏览器根本不允许互相访问的限制,为了突破这个限制,所以有了以下这个实现方案,使用postmessage和localstorage进行数据跨域共享。 原理比较简单,但是遇到的坑也不少,这里梳理一下,做...
NULL 博文链接:https://can4you.iteye.com/blog/829419
设置django允许跨域请求,以实现前后端的分离
众所周知,我们在做前后端分离项目的时候,经常需要在本地起前端工程,接口希望拉取服务端的实际数据而不是本地的mock数据,而如果本地程序直接访问远程接口, 肯定会遇到跨域问题。 什么是跨域?实现跨域的多种方式? ...
NET CORE 允许跨域访问文件中间件,添加自定义文件夹后。可指定相应文件访问。
pdfjs跨域加载文件预览。亲测可以用。在SSM框架中实现的。但是原理是通用的 详情查看http://blog.csdn.net/u013132051/article/details/76066920
https://blog.csdn.net/qq_40216244/article/details/109046931 ceslium加载Geoserver跨域问题方法步骤,真实有效。
html5 postMessage解决跨域、跨窗口消息传递 这也是html5另一个API——web workers传递消息的方法
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
asp.net jquery 跨域提交请求数据
基于二级链结构的跨域数据融合溯源框架设计 自动化 安全分析 安全对抗 威胁情报 网络安全
在使用HTTP请求时,会遇到跨域加载问题,本例解决该类问题,