解决ActionScript 3加载swf 跨域问题

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的SWF文件,此时即使B服务器上设置了crossdomain.xml,也无济于事,B服务器上被加载的SWF文件除必须的crossdomain.xml外,还必须使用Security.allowDomain("*")才能消除安全沙箱(注:我加载的是AS3编写的SWF)。对于无法使用Security.allowDomain("*")的SWF文件,如AVM1的SWF或我们无法编辑被加载的SWF时,我们就可以使用下面这种方式。

使用Loader加载外部SWF文件的时候,如果不出现错误,文件是可以成功加载进来的,只不过是在使用该SWF文件时,flash会报安全沙箱错误,我们可以使用一种方式绕过该安全沙箱,具体操作如下:

1、首先使用一个Loader加载一个外部SWF,监听Loader.contentLoaderInfo的Event.COMPLETE事件;

2、加载成功后,先暂时不使用这个加载成功的Loader,而是另写一个Loader,使用Loader.loadBytes()来加载第一个Loader的contentLoaderInfo.bytes;

3、在第二个Loader加载成功后,就可以使用被加载的SWF文件了;

示例代码:

public function load():void
{
// 第一个Loader用于使用url加载文件
var loader1:Loader = new Loader();
loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, loader1Complete);
loader1.load(new URLRequest("文件url"));
}

private function loader1Complete(event:Event):void
{
var loaderinfo:LoaderInfo = event.target as LoaderInfo;
// 第二个Loader用于加载第一个Loader加载进来的bytes
var loader2:Loader = new Loader();
loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, loader2Complete);
loader2.loadBytes(loaderinfo.bytes);
}

private function loader2Complete(event:Event):void
{
// 在这里可以使用被加载进来的文件了
// event.target as DisplayObject
}

注意:使用上面的方式,也应该注意B服务器上有crossdomain.xml文件


附:Flash Player的安全模型

您可以加载来自任何可访问源的内容。
如果执行调用的 SWF 文件位于网络沙箱中并且要加载的文件是本地的,则不允许加载。
如果加载的内容为用 ActionScript 3.0 编写的 SWF 文件,那么除非可以通过调用加载的内容文件中的 System.allowDomain() 或 System.allowInsecureDomain() 方法来允许跨脚本排列,否则另一个安全沙箱中的 SWF 文件不能对它执行跨脚本操作。
如果被加载的内容为 AVM1 SWF 文件(用 ActionScript 1.0 或 2.0 编写),则 AVM2 SWF 文件(用 ActionScript 3.0 编写)不能对它执行跨脚本操作。但是,可以通过使用 LocalConnection 类在两个 SWF 文件之间实现通信。
如果被加载的内容为图像,则除非该 SWF 文件的域包含在该图像原始域的跨域策略文件中,否则安全沙箱之外的 SWF 文件无法访问其数据。
在只能与本地文件系统的内容交互的沙箱中的影片剪辑不能对只能与远程内容交互的沙箱中的影片剪辑使用脚本,反之亦然。
用AS3加载外部SWF文件 用ActionScript 3.0加载外部SWF文件,每个按钮对应一个文件,在同一时刻只能加载一个文件,令被加载的文件显示在固定大小的容器内。Adobe Flash CS4格式 立即下载

相关推荐

外设高级定时器互补输出带死区控制实验

外设高级定时器互补输出带死区控制实验

ff_juju的博客 1652

绕开AS3安全沙箱,跨域加载SWF

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的SWF文件,此时即使B服务器上设置了crossdomain.xml,也无济于事,B服务器上被加载的SWF文件除必须的crossdomain.xml外,还必须使用Security.allowDomain("*")才能消除安全沙箱(注:我加载的是AS3编写的SWF)。对于无法使用Se

一个技术的优快云博客 1万+

[特殊字符] 智能补货(AI-driven Replenishment)完整实施方案

补货量=预测需求+安全库存−当前库存补货量 = 预测需求 + 安全库存 - 当前库存补货量=预测需求+安全库存−当前库存。:基于 LSTM/Transformer 预测未来 30/60/90 天的销量。

nbsaas-boot基于Request-Response的企业级快速开发框架 967

SWFObject Flash Embedding Cage Match

看文章:Flash Embedding Cage Match http://www.alistapart.com/articles/flashembedcagematch/   “How can you best embed Flash content?” It shou

flyingqr的专栏 1822

3个国产AI大模型实战:如何用DeepSeek+豆包+千问批量生成高质量测试用例(附完整代码)

本文详细介绍了如何利用DeepSeek、豆包和千问三大国产AI大模型批量生成高质量测试用例的实战方法。通过Python环境配置、多模型SDK安装和统一接口封装,实现高效测试用例生成,并结合结构化提示词设计和多模型结果对比分析,显著提升测试效率和覆盖率。

weixin_29197699的博客 710

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1043

关于Actionscript 3加载外部swf

              关于Actionscript 3加载外部swf声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息。本文链接:http://blog.youkuaiyun.com/li_007/archive/2009/03/27/4031073.aspx开拓进取的小乌龟------->优快云点滴点点滴滴Blog对于外部swf的加载,Actions

点滴点点滴滴 9201

TI MSPM0G3507 循迹小车强制寻黑线代码一

一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。

雾削木的优快云博客 1855

This content contains ActionScript 3 which is not yet supported by the Ruffle emulator.

This content contains ActionScript 3 which is not yet supported by the Ruffle emulator.

qq 117791303 538

PHM2010刀具磨损预测完整实现

本文介绍了PHM2010刀具磨损预测项目的完整实现方案。项目采用PHM2010公开数据集,包含6个子数据集,记录了铣削加工过程中7个通道的传感器数据(切削力、振动和声发射信号)。技术路线包括数据预处理(截取中间10万点、小波降噪)、特征提取(时域9个、频域4个特征)、特征融合和皮尔逊相关系数筛选,最终使用BiLSTM模型进行训练和评估。环境配置基于Python 3.9,依赖NumPy、Pandas、PyTorch等库。数据加载和预处理阶段重点处理了传感器信号分段和磨损标签对齐问题,为后续建模奠定基础。

huanghm88的专栏 416

windows 10 等保3级配置核查与加固(附自动化加固脚本)

关闭注册表编辑器,然后重新启动计算机。\\r\\n 对于OPC通讯站(server\\\\client),【密码最长存留期】需要设置为0,即密码不过期。‌445端口‌:修改注册表禁用。打开命令提示符,运行命令“gpedit.msc”打开组策略编辑器,浏览到路径“本地计算机策略\\\\计算机配置\\\\Windows设置\\\\安全设置\\\\本地策略\\\\安全选项”,在右边窗格中找到“Microsoft网络客户端:将未加密的密码发送到第三方SMB服务器”,双击,配置为“已禁用”,确定。

悦分享 160

ActionScript3.0反射遇到的问题

没有引用会导致AS3反射出现问题,引用很简单,但需要引用一堆文件呢?如何快速得到一个包内所有类的名称?本文给你一个解决方案。

技术杂货铺 527

一个最简单的 ALV Tree 树控件例子,无需依赖任何第三方代码

此行代码声明报表程序,程序名称为。在 SAP ABAP 中,报表(report)程序表示该程序具有独立执行、输出及打印功能。在实际开发过程中可根据公司命名规范确定报表名称,例如销售报表、库存报表等。这段代码声明了一个结构类型。id:数据类型为char18,用于存放节点标识符。text:数据类型为char40,用于存放节点显示文本。在实际场景中,例如构造产品目录时,id可以表示产品编号,而text则可以显示产品名称,这样便于用户直观识别。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 623

as3 跨域加载swf资源,并使用其中的代码

as3的安全沙箱很严格,跨域加载swf资源或使用资源中的代码的时候会出现若干问题,例如通过原件的库链接名"role"创建对应的实例的时候会出现"role"未定义的错误 不管放置swf资源的的server上有没有crossdomain.xml文件, 只要这个swf资源有类似Security.allowDomain("*");的权限, 那么别的域的swf就能得到相应的资源 如果你用...

weixin_30498921的博客 140

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

swf之间传值

今天要做一个Loading的swf文件,加载主文件,但要加载完成后给主文件赋值, 在网上查了一下,: 载入swf后,如何控制它? 在as3中,swf A载入swf B。用loader类载入的。但发现载入后,尽管在A中trace(loader.content)明显能够指向B(因为会输出[Object B]这样的信息),但却无法访问其属性和方法,不知道怎么才能让A控制B啊?     var...

wwj256的专栏 233

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

as3加载外部资源

在as3的开发中,经常会加载外部共用资源,比如某一个公用的图片或者其它小特效。这时候为了避免重复请求,一般会将这些资源放在一个fla文件中,为每一个资源添加链接。这里以一张图片为例(flower.fla): 这样就生成了一个名为flower.swf文件,将其放在b.com域下,访问路径为:http://b.com/swf/flower.swf 新建一个名为main.fla文件,如果是在f...

weixin_33816946的博客 144

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

绕开AS3安全沙箱,跨域加载SWF(转)

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的SWF文件,此时即使B服务器上设置了crossdomain.xml,也无济于事,B服务器上被加载的SWF文件除必须的crossdomain.xml外,还必须使用Security.allowDomain("*")才能消除安全沙箱(注:我加载的是AS3编写的SWF)。对于无法使用Se

1277

主swf与被加载swf的通信问题

做flash应用,经常要用到swf与swf之间的通信,而加载与被加载swf之间的通信最为常见。而习惯了as2开发的同学,转到as3开发时,会觉得有点不适应,下面就讲下as3和as2实现加载与被加载swf通信的不同之处。(一)先讲as2.在as2中,无论你用loadMovie还是loadClip加载进来一个swf,只要知道他们的层级关系,都可以用this、_parent等轻松

起跑线的专栏 2687

ActionScript 3外部swf文件载入

打算开始转入AS3的开发,之前的AS2代码将逐步转移过来,在编码过程中可能获得一些有价值的信息,我将和大家一起分享和讨论。有更好的建议,也可以在这里提出来。我不保证我采用的方法是最好的,也不保证代码没有任何问题,应此,在使用我的代码产生的任何问题,我都不负责。同时,请注意,不要将这些代码用于商业用途,如果必须,请与我联系。  在AS2中加载外部swf文件一般都用MovieClipLoade

半道出家的和尚 1604

绕开AS3安全沙箱 跨域加载SWF

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的SWF文件,此时即使B服务器上设置了crossdomain.xml,也无济于事,B服务器上被加载的SWF文件除必须的crossdomain.xml外,还必须使用Security.allowDomain("*")才能消除安全沙箱(注:我加载的是AS3编写的SWF)。对于无法使用...

TTS 151

解决SWF加载报错问题 —以及利用该错误防止盗链

 一个SWF加载另一个SWF时,常会报错,最近研究了主要的报错情况.在剖析报错情况前,先看下我们用的加载代码:AS3代码var loadSwf:Loader = new Loader;    loadSwf.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCom)    loadSwf.load(new 

请移架http://blog.sina.com.cn/u/2765457197 1569

在ActionScript中加载外部SWF文件并操作其组件

使用ActionScript 3时,在当前的Container中需要加载外部的SWF文件,并给其中的button等组件添加监听事件。通常在ActionScript中加载SWF文件有有两种方式:一是通过Embed将外部SWF文件作为新类注册到当前类;二是通过Loader将SWF文件加载到当前Stage,通过该显示对象的root调用其中的组件。本文将介绍第二种使用方式。 在本文中,当前Stage...

thewaychung2的博客 505

flash actionscript3.0加载外部swf资源包

加载外部swf资源包编程是一个编写as3.0非常不错的美工与程序分离的方法。有很多人比较喜欢给Flash弄一个文档类,然后ctrl+enter,我曾经也是这种人。讨厌外部加载资源包,直接一个swf就全部搞定。对于as3.0初碰,这也很正常,因为有很多中文版的书箱就是这么教的。如果你也已经把as3.0摸出感觉了,不如试试外部加载资源包的方法。专门生成一个没有程序,没有文档类的swf资源包。...

dengxiao9180的博客 526

[as3.0]调用加载的SWF文件的函数

 在使用as3.0中,想要一个SWF文件(假设为1.swf)加载另一个SWF文件(假设为2.swf),并且1.swf调用2.swf文件里的方法,方法如下:1.swf:var url:String = "2.swf";var req:URLRequest = new URLRequest(url);var myLoader:Loader = new Loader();myLoader.loa

2885

AS3预加载SWF实例

在页面上显示SWF是要等到目标完全被加载完才会渲染出来。当加载的SWF文件比较大时,页面会处于空白状态,用户体验不好。较好的做法是做一个文件大小较小的loading动画来加载目标SWF,但对于单独的项目来说并不是最好的做法,因为这样无疑要维护多一个项目。看看下面这种做法: 1.创建Preloading.fla,设置Export class in Frame:2(第二帧才运行Main cl

niccgz 1476
上一篇: flex mouseEnabled和mouseChildren的区别
下一篇: openscales1.2类图
stulpnn
博客等级 码龄18年 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值