zoukankan      html  css  js  c++  java
  • Loader加载与URLLoader加载(跨域加载操作)安全沙箱冲突

    安全沙箱,跨域问题解决需要按规则来

    1、首先说下Loader加载与URLLoader加载的区别
    ⊙ Loader:只能加载SWF和图像。
    ⊙ URLLoader:除了能加载swf和图像,还可以加载二进制文件(txt , xml , swc , ........)。

    Loader:
    当调用Loader的load(req: URLRequest , context: LoaderContext=null)方法时可以指定context,也可不指定。
    LoaderContext类包括3个属性,用于指定加载文件时的决策。
      1.checkPolicFile(仅当加载图像文件才设置): 是否从被加载文件的服务器上检查URL策略文件,如果被加载方所在域与加载方所在域不同,需要指定此属性为true。 如果策略文件允许加载方加载,那么可以随意使用图像数据了

      2.securityDomain(仅当加载swf文件才设置): 当被加载文件swf与加载文件swf所在域不同需要设置。
    securityDomain仅有2个值(null / SecurityDomain.currentDomain),为第二个值时,意思是说,将被加载的swf"复制"到加载方swf所在域里,之后就可以随意使用被加载进来的swf里的类,方法,属性等(注意:前提是被加载方swf必须授予加载方权限才行,授予权限有2中方式,crossdomian.xml与Security.allowDomain)。

     3.applicationDomain(仅当加载as3编写的swf文件才使用此属性):当加载文件时,可将加载数据放置在特定应用程序域中,有4种程序域(与加载方合并为一个程序域,与加载方并行一个程序域,成为加载方的子域),住:应用程序域是安全域的子单位。

    //如下例子:

      

      var loader:Loader = new Loader();

      var urlRequest = new URLRequest();

      urlRequest.url = currentLoadingData.url;//你的资源地址

      /***************/下面这里是跨域的时候需要添加的内容

      var context:LoaderContext = new LoaderContext();

      context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); //这个是关键
      if(context.checkPolicyFile==true)
      {//跨域的时候用到当被加载文件swf与加载文件swf所在域不同需要设置,(从被加载文件的服务器上检查URL策略文件时)
        context.securityDomain = SecurityDomain.currentDomain;//意思是,把这个被加载SWF的域等同于安全域,被读取文件所在域根目录需要部署crossdomain.XML 策略文件

      }

      /***************/
      loader.load(urlRequest,context);




    URLLoader:
    当加载的数据时,fp会在被加载方所在服务器检查跨域策略文件的存在,如存在并且该策略文件授予加载方swf文件所在域访问权,则可加载数据。

    加载方式 Security.loadPolicyFile(“http://myDomain/crossdomain.xml”);//策略文件放在被加载者服务器根目录(在提供数据的站点放入一个crossdomain.xml文件)

  • 相关阅读:
    HDU 5501
    CF #324 DIV2 E题
    CF #324 DIV2 C题
    利用位操作实现加减运算(不用+ -号)
    【Leetcode】120. 三角形最小路径和
    删除排序链表中的重复元素
    【python】二分查找
    如何在不添加新数组的情况下移除元素?
    三/四 数之和,双指针法,细节很多
    【转】字符串相关操作
  • 原文地址:https://www.cnblogs.com/attesa/p/6962889.html
Copyright © 2011-2022 走看看