• 实现Flash跨域访问


    Flash Player 7 及以上版本为目标播放器发布的文件,采用完全域匹配规则,而不是超域匹配规则。因此,被访问的文件(即使该文件以 早于 Flash Player 7 的 Flash Player 版本为目标播放器发布)必须显式允许跨域或子域访问;其次,在某一使用安全协议 (HTTPS) 的站点上承载的文件必须显式允许从使用不安全协议(HTTP 或 FTP)的站点承载的文件的访问。
    所以当使用loadMovie进行跨域访问时,需要调用 System.security.allowDomain。如果LocalConnection 接收方是 HTTPS SWF 文件,而发送方不是,则调用 allowInsecureDomain。
    可以使用下面的代码实现跨域访问:System.security.allowDomain("someSite.com");
    或 System.security.allowInsecureDomain("someSite.com") ;
    这里也支持使用通配符 (*) 。通配符 (*) 值允许在访问文件是任何文件并且可从任何位置(如全局权限)加载时进行跨脚本操作:System.security.allowDomain("*");
    或System.security.allowInsecureDomain("*");
    另一种是用 Flash 文档访问另一个域中的数据。Flash Player 会自动试图从该域加载策略文件。如果试图访问数据的 Flash 文档所在的域包括在该策略文件中,则数据将自动成为可访问数据。
    策 略文件必须命名为 crossdomain.xml,并且可以驻留在服务器的根目录和其它目录之中,这个服务器提供要被访问的 ActionScript 数据。每个策略文件对于它所驻留的服务器的端口和协议是特定的,只有在通过 HTTP、HTTPS 或 FTP 进行通信的 服务器上,策略文件才起作用。
    下面的代码是一个策略文件,它允许从 aeroflash.org 上的 Flash 文档访问来自 aeroflash.org、www.friendOfAeroflash.org、*.www.aeroflash.org 和 123.321.0.1 的 Flash 文档:

    <?xml version="1.0"?>
    <!-- http://www.aeroflash.org/crossdomain.xml -->
    <cross-domain-policy>
       <allow-access-from domain="www.friendOfAeroflash.org" />
       <allow-access-from domain="*.aeroflash.org" />
       <allow-access-from domain="123.321.0.1" />
    </cross-domain-policy>
    此外,也可以使用通配符允许访问来自任何域的文档:
    <?xml version="1.0"?>
    <!-- http://www.aeroflash.org/crossdomain.xml -->
    <cross-domain-policy>
       <allow-access-from domain="*" />
    </cross-domain-policy>

    Flash跨域调用JavsScript,需要在FLASH脚本调用处加上参数:<param name="allowScriptAccess" value="always" />,该参数默认为:sameDomain。

    众所周知,flash因为安全的考虑不支持跨域访问
    除非你访问的站点有crossdomain.xml(域名根目录下)
    但我们不能让没个站点都放一个
    因此,就就要介绍一下Server-side proxy method
    web脚本代理的方法:
    ColdFusion | PHP | ASP | JSP
    以上的example必须和flash document放在同一个domain的server中才能正常使用,把sample中的URL换成你自己的URL即可。

    官方参考http://www.adobe.com/cn/devnet/flash/articles/fplayer8_security_print.html
  • 相关阅读:
    数据结构——快速排序
    设计模式——代理模式(静态代理和JDK、CGLib动态代理)
    Java多线程系列——信号量:Semaphore
    Java多线程系列——线程阻塞工具类LockSupport
    Java多线程系列——过期的suspend()挂起、resume()继续执行线程
    Java多线程系列——深入重入锁ReentrantLock
    JVM——深入分析对象的内存布局
    【Git】The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
    【linux】CentOS: Sudo: unable to initialize policy plugin
    【Git】.git/FETCH_HEAD: Permission denied 的解决方法
  • 原文地址:https://www.cnblogs.com/zhangsir/p/1364840.html
Copyright © 2020-2023  润新知