`
shlei
  • 浏览: 288623 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

解决Flex跨域"访问URL时遇到安全性错误"

    博客分类:
  • FLEX
阅读更多
Flash/Flex,会涉及到跨域访问URL的安全性问题,最常见的就是出现"访问URL时遇到安全性错误",这也是人们以前常说的安全沙箱问题,解决方案是在目标域名根目录加入跨域策略文件crossdomain.xml,例如:

<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.techmango.com" /> </cross-domain-policy>

这表示目标源允许*.techmango.com下的资源访问该域名下的资源.

问题2:

如果涉及到Socket,跨域策略文件中需要加入to-ports,例如:

<cross-domain-policy>   <allow-access-from domain="*" to-ports="507" />   <allow-access-from domain="*.example.com" to-ports="509,516" />   <allow-access-from domain="*.example1.com" to-ports="517-521" />   </cross-domain-policy>

这个策略文件是指定允许哪些域的主机通过那些端口链接.

问题3:

如果在访问Webservice需要用到SOAPHeader验证,跨域策略文件做相应修改,例如:

<cross-domain-policy>
    <allow-access-from domain="*.chenfeisoft.com" />
    <allow-http-request-headers-from domain="*.techmango.com" headers="*"/>
</cross-domain-policy>


否则会出现DefaultHTTP错误.

问题4:

跨域访问第三方组件提供的数据,如BlazeDS,也会遇到DefaultHTTP错误.这需要服务器及UI端做相应配置,例如:

[Service端]

在服务器端的配置文件中,找到proxy-config.xml文件,里面有一个默认的destination节点: <destination id="DefaultHTTP"> </destination>

默认代理的destination将转向客户端指定的URL进行请求。首先你必须使用dynamic-url属性来指定允许代理的destinations.如下:

把你要访问的URL都配置到dynamic-url节点里。

<destination id="DefaultHTTP">
        <properties>
                <dynamic-url>http://cnn.com/*</dynamic-url>
                <dynamic-url>http://news.yahoo.com/*</dynamic-url>
        </properties>
</destination>

修改后,保存。
[UI端]:
为了Flex应用能够访问代理服务,要确保你的应用程序指向正确的service,并设置useProxy 属性为ture.如:
<mx:HTTPService url=”http://cnn.com” useProxy=”true” />
<mx:WebService url=”http://cnn.com/api?wsdl” useProxy=”true” />
编译UI,重新部署。若不能正常读取RSS的信息,检查是否设置了channelSet; channelSet 是HTTPService的属性,一定要设置。一般来讲HTTPService和RemoteObjcet的channelSet是一样的。

=========================================22222

方法:
1.新建一个名为crossdomain.xml的文件
其内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*" to-ports="517-512" />
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
2.将这个文件放入C:\Inetpub\wwwroot目录下,
3.在flex项中的CreationComplete函数中增加一行代码Security.loadPolicyFile("crossdomain.xml的路径");,如下:
protected function onCreationCompleteHandler(event:FlexEvent):void{
Security.loadPolicyFile("http://192.169.1.137:88/crossdomain.xml");
}

From http://wangjianwei866.blog.163.com/blog/static/929582320110844142318/
分享到:
评论
1 楼 past2010yeah 2012-10-15  
太好了,解决了我纠结很久的问题!!!非常感谢!

相关推荐

    tomcat跨域解决方案

    当遇到需要跨域访问的需求时,开发者必须采取相应的措施来解决这一问题。 对于使用Apache Tomcat服务器的应用程序来说,跨域问题同样普遍存在。当客户端尝试访问由Tomcat服务器托管的应用程序时,如果客户端所在的...

    Flex_RPC错误大全

    - **问题分析**:使用默认终端代理时遇到的安全沙箱冲突,解决方法包括修改安全策略文件或更改目标destination以允许所需的URL。 #### 4. No destination with id XXX registered 错误信息:...

    ArcGIS API for Flex开发WebGIS中的安全沙箱问题

    在使用ArcGIS API for Flex开发WebGIS应用时,安全沙箱问题是一个重要的考虑因素,它涉及到数据的安全性和应用程序的跨域访问控制。Flex是Adobe Flash平台的一部分,用于创建丰富的互联网应用,而ArcGIS API for ...

    Flex与java通讯

    跨域访问是Flex与Java通信时必须考虑的安全问题。Flex客户端需要获取服务器的cross-domain.xml文件,以允许跨域请求。服务器端需要设置相应的策略,确保只允许合法的Flex应用程序进行通信。 7. **Data Transfer ...

    Flex项目Google IFrame使用

    确保提供的URL是有效的,并且支持跨域访问,因为浏览器的安全策略可能阻止IFrame加载来自不同源的内容。如果需要跨域,可以使用CORS(跨源资源共享)设置。 3. **渲染问题**:在某些情况下,IFrame可能由于渲染问题...

    flex访问remoteObject实例

    9. **安全性**:考虑到安全问题,使用RemoteObject时可能需要配置跨域策略文件(crossdomain.xml),以允许Flex客户端从不同源访问服务。 10. **性能优化**:通过合理的设计和优化,如减少不必要的网络请求、批量...

    flex加载flashpaper示例

    另外,考虑到访问网络资源的安全性,如果SWF文件位于远程服务器,记得处理跨域问题。 在这个示例中,"flashCode"可能包含了用于生成和操作FlashPaper内容的ActionScript代码,而"src"目录则包含了Flex项目的源代码...

    将flex页面数据导出到excel

    需要注意的是,为了跨域安全,可能需要配置服务器端的CORS策略,允许Flex的请求访问。 在实际开发中,我们还需要考虑性能和数据量的问题。如果数据量非常大,一次性发送所有数据可能会导致网络延迟或服务器压力过大...

    flex-iframe

    6. **版本兼容性**:使用`flex-iframe-1.4.6`时,需要确保它与当前的Flex SDK和运行时环境兼容。不同的Flex版本可能引入了新的特性和API,因此选择正确的版本对于避免兼容性问题至关重要。 总的来说,`flex-iframe`...

    Flex IFrame

    6. **安全性与限制**:由于安全沙箱的存在,不是所有的网页都能在IFrame中正常运行,特别是涉及到跨域访问时。开发者需要了解Flash Player的安全策略,并确保内容符合安全规定。 7. **性能优化**:在Flex应用中嵌入...

    flex与java通讯,URL,HTTPService,Socket

    Flex与Java之间的通信是开发跨平台应用程序时的关键技术,它允许客户端(通常为Flex应用程序)与服务器端(通常是Java应用程序)进行数据交换。本篇将深入探讨几种主要的通信方式:URLLoader,HTTPService和Socket。...

    flex 嵌入完美Iframe

    2. 处理跨域问题:由于安全限制,如果HTML页面不在同一域下,需要设置跨域策略文件以允许Flex加载内容。这通常意味着在服务器上放置一个crossdomain.xml文件,声明允许哪些源进行访问。 3. 监听加载事件:使用...

    Flex与Flash相互调用

    通过以上步骤,我们可以在Flex和Flash之间实现双向通信,充分利用两者的优势,创造出更具交互性和动态性的应用程序。在实际开发中,可以根据具体需求对交互逻辑进行扩展和优化,以提供更好的用户体验。在提供的...

    Flex4_httpService

    此外,可能还需要在服务器端设置跨域策略文件(crossdomain.xml)以允许Flex应用访问。 5. **源码分析**:项目中的源码可能包括Flex的MXML文件,定义了HTTPService组件的实例和事件处理函数,以及ActionScript代码...

    Flex控制swf简单源码

    此外,为了确保安全性和性能,Flex和SWF之间的通信可能会受到沙箱限制。通常,加载的SWF文件会位于不同的安全域中,这可能会影响它们之间的交互。因此,你可能需要设置`LoaderContext`来允许跨域通信,或者在SWF头部...

    Flex与java通讯例子

    Flex与Java之间的通讯是Web开发中的重要一环,特别是在构建富互联网应用程序(RIA)时。Flex作为Adobe开发的开源框架,主要用于创建具有丰富用户界面的Web应用,而Java则是一种广泛应用的后端开发语言,提供了强大的...

    flex iFarme的test输入连接

    3. **安全性和跨域问题**: 使用iFrame进行远程访问时,必须注意跨域安全限制。默认情况下,浏览器不允许不同源的脚本相互操作。为了解决这个问题,服务器端需要提供一个跨域策略文件(crossdomain.xml),允许特定...

    flex加载as2写的swf,内容是一个很雷的网页游戏AD

    - 安全限制:跨域加载SWF文件时,需要确保SWF具有正确的跨域策略文件,以防止安全错误。 - 版本兼容:确保你的Flash Player版本能够支持你想要加载的AS2 SWF的所有功能。 - 性能:AS2 SWF在AS3环境中运行可能会...

    flex中嵌入html

    这可能是由于路径错误、安全限制或兼容性问题导致的。使用浏览器的开发者工具和Flex的调试器可以帮助找出问题。 总结,"flex中嵌入html"是一个涉及Flex组件使用和跨技术集成的话题。IFrame组件是实现这一目标的关键...

    flex 博客阅读器 实现代码

    ### Flex博客阅读器实现知识点详解 #### 一、项目背景及环境配置 ...不仅实现了数据的远程加载,还解决了跨域访问的安全问题。此项目为开发者提供了一个良好的实践案例,有助于理解Flex框架的使用方法及注意事项。

Global site tag (gtag.js) - Google Analytics