zoukankan      html  css  js  c++  java
  • 关于flex的crossdomain.xml文件存放目录

      最近在项目中遇到flex跨域访问的安全沙箱问题,查资料了解到需要在服务端加上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>
      <allow-access-from domain="*"/>
      <allow-http-request-headers-from domain="*" headers="*"/>
    </cross-domain-policy>

           但对于具体存放在web服务的那个目录下,一直困惑不已,最终发现,这需存放在你服务器的默认站点目录下,一般情况下,目录站点都是Root;tomcat中存放在

    webapps/ROOT/ 下,即所谓的根目录;jboss存放目录也很类似,也是放在默认站点root目录下,以我机器为例,存放在:C:jboss-4.0.5.GAserverdefaultdeployjbossweb-tomcat55.sarROOT.war中的Root.war中;

    倘若你的tomcat 或者jboss中没有默认站点Root,那crossdomain.xml需要放在哪里呢?

    两种处理办法:1.拷贝一个Root站点到你的tomcat或者jboss中,再在其中加入crossdomain.xml;

    2.如果你的tomcat或者jboss的默认站点已经设置成了其他的应用,则你需要将crossdomain.xml放置到这些个具体的默认站点中去;

    一言以蔽之,crossdomain.xml需要存放在你默认站点的根目录下,检验你的crossdomain.xml是否放置正确,你可以通过用http://domainname/crossdomain.xml这种方式访问即可(切记不要加应用名),以我机器为例:

    http://127.0.0.1:8080/crossdomain.xml,如果可以访问到到该xml 就可以了。

    当然在这个过程中我不得不再提醒你一个很值得你注意的地方:在做所有工作之前请把你的浏览器缓存clear掉,因为我在实践当中该死的缓存几乎差点让我怀疑自己,差点让我不知所措!

    ps: adobe默认的策略文件还提供了另一种访问机制,即他可以用Security.loadPolicyFile方法加载指定目录下的crossdomain,但是在某个版本后,就要求在服务器根目录下必须有crossdomain文件了,官方文档解释如下: 
    SWF 文件可以通过调用 Security.loadPolicyFile() 方法检索其它策略文件名或其它目录位置。但是,如果主策略文件未指定目标位置能提供策略文件,则调用loadPolicyFile() 无效,即使该位置有策略文件。 
    http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e08.html

    因此,如果你的站点访问存在安全沙箱问题,无论如何你的默认站点下都需要放置crossdomain.xml

  • 相关阅读:
    git commit --amend
    Interleaving String leetcode
    Longest Common Substring
    Distinct Subsequences Leetcode
    Longest Common Subsequence
    Palindrome Partitioning II Leetcode
    百度面试时遇到这样一个问题:给定数组a[];计算除最后一个元素之外其他元素的和,下面的代码有什么问题吗
    sizeof与strlen
    网络是怎么连接的(2)?
    网络是怎么连接的(1)?
  • 原文地址:https://www.cnblogs.com/telwanggs/p/4999899.html
Copyright © 2011-2022 走看看