`

允许Flash跨域加载数据

阅读更多
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配置详解以及防范措施.docx

    全的配置,应避免使用]2)以星...正确配置 crossdomain.xml 可以确保数据的安全传输,防止恶意跨域攻击。然而,配置不当可能导致敏感信息泄露或被利用,因此在设置时务必谨慎,遵循最佳实践,以保护网站和用户的安全。

    flash中加载网页

    如果HTML文件和SWF不在同一个域下,可能需要设置跨域策略文件以允许数据交换。 6. **优化与性能**:加载网页内容可能会消耗一定的时间和资源,因此优化加载过程至关重要。可以考虑预加载、分块加载、异步加载等策略...

    跨域的解决方案有多重JSONP、Flash、Iframe等,当然还有CORS(跨域资源共享,Cross-Origin Resource Sharing)

    服务器设置适当的CORS响应头(如`Access-Control-Allow-Origin`),浏览器在发起请求时会添加预检请求(OPTIONS),确认服务器允许跨域访问。CORS提供了更安全、更可控的跨域方式,可以支持多种HTTP方法,甚至携带...

    flex跨域访问问题

    然而,在Flex应用与不同源的服务器进行数据交互时,可能会遇到跨域访问的问题。跨域是Web浏览器的一个安全限制,它阻止了一个页面中的脚本直接访问另一个不同源的资源,除非目标服务器明确允许。 ### 跨域问题详解 ...

    swfupload 跨域问题

    跨域是指浏览器的安全策略限制了JavaScript从一个源(域名、协议或端口)获取资源到另一个源的能力,这是为了防止恶意脚本窃取或修改数据。但是,在现代Web应用中,跨域资源共享(CORS)机制被广泛采用,以安全地...

    解决跨域的几种方法.zip

    类似于JSONP,动态创建`&lt;script&gt;`标签可以加载不同源的JavaScript资源,通过回调函数接收数据。 6. HTML5的postMessage API `postMessage`是HTML5引入的一个新特性,允许来自不同源的窗口进行通信。发送方使用`...

    SWFUpload的跨域请求处理

    然而,有时我们希望允许跨域请求,例如在API调用、数据交换等场景。SWFUpload通过Flash技术绕过了同源策略的限制,实现了跨域HTTP请求。 SWFUpload的安装和配置是使用它的第一步。你需要下载SWFUpload库,并将其...

    MP3跨域音频频谱AS3播放器

    为了实现跨域播放,播放器需要设置正确的跨域策略,通过XMLHttpRequest或Flash的crossdomain.xml文件来允许来自不同源的请求。这样,用户可以不受限制地在任何网站上使用该播放器播放远程音频资源。 频谱播放器的...

    Silverlight跨域文件

    当Silverlight尝试从不同域获取数据时,它会自动查找并加载这个策略文件。 在"请确保服务器根目录下有一个跨域文件"的错误信息中,系统提示我们缺失了这个必要的文件。这意味着你的Silverlight应用尝试访问不在同一...

    tomcat跨域

    `crossdomain.xml`文件主要用于Adobe Flash Player和Acrobat等客户端,它们需要在跨域时获取数据的权限。在Tomcat中,虽然主要使用CORS配置,但如果你的应用涉及到Flash内容,也可以设置`crossdomain.xml`。 `cross...

    跨域上传net

    - **Flash的安全设置**:由于Uploadify可能使用Flash,所以服务器必须有一个有效的`crossdomain.xml`来允许跨域请求。 - **安全考虑**:跨域上传可能会带来安全风险,比如CSRF攻击。因此,需要在服务器端验证请求的...

    c# winform传值到FLASH

    如果在Web环境中运行,你可能需要设置跨域策略文件以允许Flash加载XML数据。 6. **集成到WinForm应用**: 最后,将Flash SWF文件嵌入到C# WinForm中,通常使用AxShockwaveFlashObjects命名空间中的AxShockwaveFlash...

    (转)10种方式实现跨域资源的共享

    9. **Flash**:尽管Flash已经逐渐被淘汰,但它曾经支持跨域策略文件(crossdomain.xml),允许Flash内容从其他源获取数据。 10. ** CORS预检请求(Preflight Request)**:对于某些可能对服务器有副作用的请求(如...

    FLASH XML加载外部图片

    如果你的XML和图片不在同一域名下,可能需要设置跨域策略文件以允许Flash加载这些资源。 此外,为了优化性能和用户体验,可以考虑使用SpriteSheet或Texture Atlas技术来合并多个图片为一个大图,然后通过索引来加载...

    VC++ 与flash交互

    5. **安全与兼容性**:由于Flash与VC++的交互涉及到跨域问题,可能需要在Flash的发布设置中开启允许跨域访问。此外,确保目标用户的系统上安装了正确的Flash Player版本,以避免兼容性问题。 6. **调试与优化**:在...

    flash加载多个SWF

    为了加载SWF,我们需要创建一个`Loader`对象,然后使用`load()`方法指定要加载的URL或数据。 以下是一个基本的SWF加载示例: ```actionscript var loader:Loader = new Loader(); var urlRequest:URLRequest = new...

Global site tag (gtag.js) - Google Analytics