原文地址 :
http://blog.sina.com.cn/s/blog_5ed17a7301017ql2.html
最近需要做跨平台应用加载,所以不可避免需要检索一些Flash Player安全沙箱的问题,需要注意的地方有以下几点:
1.服务器根目录存放crossdomain.xml(例Tomcat/webapps/ROOT;webservice或者其它服务器需要建空项目,发布Flex应用后使用策略域加载),这个文件的作用很明显,是用来给跨域加载模块时的权限允许文件。
2.搭配跨平台应用最好使用module来开发应用中单个功能块。这样编译后的swf就可以随处加载了(当然,properties/flex modules里面的module参数要选择none,即不为任何程序优化,这样module才可以独立运行)。
3.加载module的方法也要发生改变,远程跨域是无法直接使用moduleloader或者modulemanager直接加载的,需要使用字节流load过来后再加载,代码示例:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
protected function button1_clickHandler(event:MouseEvent):void
{
var obj:Object = {url : "ModuleTest1.swf"};
loadRemoteModule(obj);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.core.IVisualElement;
import mx.events.ModuleEvent;
import mx.modules.IModuleInfo;
import mx.modules.ModuleManager;
private var loader:URLLoader;
private var moduleInfo:IModuleInfo;
private var moduleInstance:Object;
private function loadRemoteModule(item:Object):void
{
var urlRequest:URLRequest = new URLRequest(item.url);
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, function urlLoader_loadCompleteHandler(event:Event):void
{
var styleModuleBytes:ByteArray = ByteArray(URLLoader(event.target).data);
moduleInfo = ModuleManager.getModule("");
moduleInfo.addEventListener(ModuleEvent.READY, onModuleReady);
moduleInfo.addEventListener(ModuleEvent.ERROR, errorHandler);
moduleInfo.load(null, null, styleModuleBytes);
});
loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
loader.load(urlRequest);
}
private function onModuleReady(event:ModuleEvent):void
{
moduleInstance = event.module.factory.create();
addElement(moduleInstance as IVisualElement);
}
private function errorHandler(event:Event):void
{
if(event is ModuleEvent)
{
Alert.show((event as ModuleEvent).type + ":" + (event as ModuleEvent).errorText);
}
}
]]>
</fx:Script>
<s:Button click="button1_clickHandler(event)" label="load module test"/>
</s:Application>
分享到:
相关推荐
flex 跨域访问文件,安全沙相问题,很有用的,放在iis里就行了
flex 跨域访问问题, flex不在同一个域,解决办法
Flex跨域问题,对于Flash Player 而言,crossdomain.xml文件内容出现了较大的变化,原因是Flash Player 9的security机制有所改变。所以当我用Flex 3调用cross domain的web service时,还使用上面的crossdomain.xml...
解决Cesium访问数据跨域问题,数据使用tomcat部署在服务器上。
pdfjs跨域加载文件预览。亲测可以用。在SSM框架中实现的。但是原理是通用的 详情查看http://blog.csdn.net/u013132051/article/details/76066920
在使用HTTP请求时,会遇到跨域加载问题,本例解决该类问题,
flex跨域上传,需nginx,tomcat host: 127.0.0.1 test1.zwh.com 127.0.0.1 test2.zwh.com nginx: client_max_body_size 2048m; server { listen 80; server_name test2.zwh.com; location / { proxy_set_...
https://blog.csdn.net/qq_40216244/article/details/109046931 ceslium加载Geoserver跨域问题方法步骤,真实有效。
提供flex跨域解决的办法 直接在根目录发布这个包就行了
eclipse环境下集成flex之后调用webservice的相关资源
使用ajax跨域获取资源,并实现本地懒加载,顺序加载
写在前面 小记,就简单写了 。问题:VUE开发时因为要访问后端的接口所以要配置请求转发,如果直接转发全部请求,那么VUE动态绑定的src也会转发到后端,因为图片在前端,所以会收到404 NOT FOUND的报错。...module.exp
解决openlayers跨域访问的解决方案,按照附件中说明.txt中步骤操作应该是没问题的,我已经测试过。
eclipse和flex集成环境下的
eclipse和flex集成环境下的
需要从公司文服直接展示pdf,折腾了大半天,网上查了各种资料,都比较坑,自己看官方demo写了一个springboot的demo,下载后修改pdf的地址可以直接运行,完美实现pdf跨域显示
H5的video标签跨域.HTML的video标签跨域 我们都知道HTML video标签能播放视频 但是如果你的video要播放的是非当前域名下的视频文件,这就要跨域播放视频, 应该如何实现呢?
跨域资源共享CORS协议介绍, cross-origin resource sharing layer
能够完美解决arcgis js跨域解决问题,该文档详细说明了.NET或者java环境下跨域解决