开发公司的某flash页面应用,初涉swf文件的html页面调用,开发过程中不可避免滴出现了跨域问题。
开发工具:FlexBuilder3, FlashCS3,语言ActionScript 3.0
应用简介:需要由flash前端按照算法选择相应的图片信息,由RUBY端生成图片,发送至新浪围脖。
所遇问题:
1、本地无法测试加载swf文件,由于html位于swf上层,加载之时报错,无法找到相应的swf文件,最初的SwfLoader加载使用相对路径data/swf/xxx.swf加载;
3、继续处理,在createComplete事件中及SwfLoader的Init事件之内,,加入域允许并载入跨域文件:
Security.allowDomain('*');
Security.loadPolicyFile('http://xxx.xxxxx.net/crossdomain.xml');
使用FF测试,依旧访问不到原始swf文件;
Security.allowDomain('*');
Security.loadPolicyFile('http://xxx.xxxxx.net/crossdomain.xml');
使用FF测试,依旧访问不到原始swf文件;
4、绝杀技,Loader加载,使用LoaderContent内容解决跨域,Loader使用绝对路径加载
Security.loadPolicyFile('http://xxx.xxxx.net/crossdomain.xml');
_loader = new Loader();
var aPolce:LoaderContext = new LoaderContext(true);
_loader.load(new URLRequest('http://xxx.xxxx.net/images/maimeng/data/swf/daoShu.swf'),aPolce); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadSwfComplete);
_loader.contentLoaderInfo.addEventListener(Event.INIT,onDaoshuSwfInit);
测试之后,问题搞定,跨域问题由此解决。
总结:flash跨域一直以来都是很头大的问题,解决方案步骤:
1、在访问服务器上及测试服务器根目录下放置crossdomain.xml文件;
2、若条件允许,将html与swf文件置于同一级目录之下;
3、使用Loader加载swf,设置LoaderContnent;
4、还是不能访问滴盆友,请自行清空本地浏览器缓存及服务器端缓存。
Security.loadPolicyFile('http://xxx.xxxx.net/crossdomain.xml');
_loader = new Loader();
var aPolce:LoaderContext = new LoaderContext(true);
_loader.load(new URLRequest('http://xxx.xxxx.net/images/maimeng/data/swf/daoShu.swf'),aPolce); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadSwfComplete);
_loader.contentLoaderInfo.addEventListener(Event.INIT,onDaoshuSwfInit);
测试之后,问题搞定,跨域问题由此解决。
总结:flash跨域一直以来都是很头大的问题,解决方案步骤:
1、在访问服务器上及测试服务器根目录下放置crossdomain.xml文件;
2、若条件允许,将html与swf文件置于同一级目录之下;
3、使用Loader加载swf,设置LoaderContnent;
4、还是不能访问滴盆友,请自行清空本地浏览器缓存及服务器端缓存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。