偌大一个中国 那么多技术人员
google baidu 居然就没有一个像样的文章来谈论这个问题
天下文章一大抄 好多都是你抄我 我抄你 也不晓得对还是不对 反正抄了再说 给自己的blog或者 网站增加的技术含量 可叹
今天不谈理论 只说具体一个事例 而且要说就要说细致点 不像有些文章说的不清不楚 看了就让人吐血
关于flex跨域读取一个图片
比如 假设你的服务器事 www.myserver.com
而你的一个flex文件位于 www.myserver.com
/flex/myfalsh.swf
当一个客户来访问你的这个myfalsh.swf 文件 而你的这个文件又要去 www.otherserver.com/img/1.jpg
这里把这个图片加载到flash中
怎么办? 最简单的方法就是 var l:loader = new loader; l.load(new urlrequest("")); 这个方式如果你的flash是直接放在本地目录上运行那还可以
放在服务器上 加载 立马 报错 安全沙箱冲突
看了看loader 的 load的方法load
(request:
URLRequest
, context:
LoaderContext
= null):
void
context:LoaderContext
这个干吗用的? 再看看帮助 原来是用来设置运行域 和 设置是否加载安全策略文件的
当然使用方法是 var lc:LoaderContext
= new LoaderContext
(true);
var l:loader = new loader; l.load(new urlrequest(""),lc); 这样行吗? 一样不行
还要放一个 安全策略文件 放在对方服务器的根目录下面 名称为:crossdomain.xml 最好是这个名字 省得多写代码
内容为
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="
www.myserver.com
" />
</cross-domain-policy>
所以这种方式有个很大弊病 就是要在对方服务器上放这么一个文件 , 别人还肯给你放啊 ? 要不就是傻了
第2种方式 很自然的就是想到用代理方法 就是 用asp,php 等类似的程序去把这种图片读回来 然后传给flex
具体: 放一个如 getpic.asp 在服务器上 和myfalsh.swf 同一个目录
getpic.asp的代码为
<
%
function
reReader(url)
dim
http
set
http
=
server.CreateObject(
"
Microsoft.XMLHTTP
"
)
with
http
.Open
"
get
"
, url,
false
,
""
,
""
.Send
reReader
=
.ResponseBody
end
with
set
http
=
nothing
end function
dim
url
url
=
Request.QueryString(
"
url
"
)
response.Clear
Response.ContentType
=
"
image/gif
"
Response.BinaryWrite reReader(url)
response.End
%
>
myfalsh.swf 种的代码这样写
private
var _loader:Loader;
private
var _LoadUrl:
String
;
public
function
FileLoader(url:
String
){
_LoadUrl
=
url;
_loader
=
new
Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,OnLoadCompleateEvent);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,OnLoadIOErrorEvent);
}
//
加载
public
function
Load():void{
var req:URLRequest
=
new
URLRequest(_LoadUrl);
_loader.load(req);
}
public
function
get
content():DisplayObject{
return _loader.content;
}
private
function
OnLoadCompleateEvent(e:Event):void{
this.dispatchEvent(
new
Event(Event.COMPLETE));
}
private
function
OnLoadIOErrorEvent(e:IOErrorEvent):void{
Alert.show(
"
加载错误
"
);
//
this.dispatchEvent(
new
Event(IOErrorEvent.IO_ERROR));
}
调用方法
FileLoader(
http://
www.myserver.com
/flex/myfalsh.swf?url=http://
www.otherserver.com/img/1.jpg
);
搞定
分享到:
相关推荐
综上所述,解决Flex跨域访问问题的关键在于理解同源策略,合理利用CORS、策略文件或代理服务,并在服务器端和客户端进行相应的配置。正确配置后,Flex应用就能安全地跨域获取和发送数据了。在实际项目中,应根据具体...
同源策略是为了保护用户数据安全而设立的一种机制,它规定一个网页中的脚本只能读取来自同一来源的数据。当遇到需要跨域访问的需求时,开发者必须采取相应的措施来解决这一问题。 对于使用Apache Tomcat服务器的...
在HTML表单中,我们可以添加一个`<input type="file">`元素,当用户选择文件后,通过JavaScript调用`FileReference.load()`方法读取文件内容。 2. **预览图片**: - 在`FileReference`的`load`事件触发后,会触发`...
1. 创建一个SWFLoader组件:Flex提供了SWFLoader组件,可以加载SWF或其他内容,包括HTML。我们可以通过设置其`source`属性来指定要加载的HTML页面URL。 2. 处理跨域问题:由于安全限制,如果HTML页面不在同一域下,...
1. **跨域策略文件**:由于Flash Player的安全限制,Flex应用在与JavaScript交互前需要加载一个跨域策略文件,允许它与不同源的JavaScript进行通信。这个文件通常命名为crossdomain.xml,放置在服务器的根目录下。 ...
Flex沙箱是Flex应用程序运行时的一个核心组件,它模仿了Adobe Flash Player的安全模型。沙箱主要分为两种类型:本地沙箱和网络沙箱。本地沙箱允许应用程序访问用户的本地文件系统和硬件设备,而网络沙箱则限制了这些...
《Flex(Eclipse)开发配置手册》是一份详细介绍如何在Eclipse环境中进行Flex应用程序开发的指导文档。Flex是一种用于创建富互联网应用(RIA)的技术,它基于ActionScript和MXML,由Adobe公司提供。这份手册将帮助...
通过这个“Flex完全自学手册(PPT)”,你将能够逐步掌握这些关键知识点,并通过实例和练习深化理解,最终成为一位熟练的Flex开发者。在学习过程中,建议结合实际动手实践,以加深对理论知识的理解和应用。
Flex ActionScript与JavaScript之间的通信是Web开发中的一个重要概念,它允许在Adobe Flash Player中的Flex应用程序与HTML页面上的JavaScript代码之间交换数据和控制交互。这种通信机制对于创建富互联网应用程序...
Flex SDK提供了一个名为`flash.net.Socket`的类,它允许我们创建客户端Socket连接,以便与服务器进行双向通信。通过这个API,我们可以读取和写入字节数据,实现低级别的网络通信。 2. 连接服务器 创建Socket对象后...
Flex API 是一个与 Adobe Flex 技术相关的API接口文档,主要涵盖了如何在Flex应用程序中进行交互和数据操作的详细信息。Adobe Flex是一个用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript编程语言和...
Flex与Java之间的通信是开发富互联网应用程序(RIA)时经常遇到的一个重要技术问题。Flex作为Adobe推出的基于ActionScript的开放源代码框架,主要用于构建交互性强的用户界面,而Java则是一种广泛使用的后端开发语言...
它可能包含了设置本地安全策略文件的命令,通过这种方式,我们可以为Flex应用定义一个本地安全域,允许其访问必要的本地资源,而无需改变用户的全局Flash Player设置。 4. **运行FlexSecurity.bat**:在解压文件后...
创建一个新的Flex项目,并在src目录下组织你的源代码。 2. **导入必要的库**:在ActionScript类文件或.mxml文件中,导入SWFLoader组件所需的库。例如: ```actionscript import mx.controls.SWFLoader; ``` 3. ...
Microphone类是ActionScript 3.0中的一个关键组件,它允许用户访问计算机的内置麦克风,并实现实时音频捕捉。通过Microphone对象,开发者可以创建各种与声音相关的应用,例如语音聊天、在线录音或音频处理程序。在...
ActionScript是Flex的核心编程语言,它是基于ECMAScript的一个方言,主要用于创建Flash内容和Flex应用程序。而JavaScript是一种广泛用于客户端Web开发的脚本语言,它可以操作DOM,处理用户事件,执行Ajax请求,提供...
在IT行业中,`flex iframe js`是一个特定的技术领域,它涉及到使用JavaScript与Adobe Flex应用程序进行交互,特别是通过IFrame(内联框架)实现。本文将深入探讨这一技术,包括其工作原理、应用场景以及如何实现AS...
当我们谈论"flex-iframe-1.4.1.zip"时,我们关注的是一个专门优化iframe使用体验的库,Flex-Iframe 1.4.1。这个版本不仅提供了基本的iframe功能,还考虑了向下兼容性,确保在不同版本的浏览器上都能顺畅运行。 Flex...
在IT行业中,Flex是一种基于Adobe Flash技术的开源框架,用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据通信能力,尤其适合创建动态、交互性强的Web应用。而JSP(JavaServer Pages)是...
沙箱机制将不同的SWF文件隔离在各自的“沙箱”内,这样即使其中一个SWF文件被攻击者利用,也不会影响到其他SWF文件。 ##### 本地播放 在本地环境中播放SWF文件时,Flash Player默认情况下不会允许该SWF文件访问...