非根目录中的Flash crossdomain.xml

时间:2009-11-03 17:51:55

标签: flash crossdomain.xml

我在http://server/abc/service中运行了一个Web服务,Flash正在从另一个域访问该服务。我将跨域策略文件部署到http://server/abc/crossdomain.xml,并使用Flash加载它:

 flash.system.Security.loadPolicyFile("http://server/abc/crossdomain.xml");

在主影片剪辑的构造函数中。但是,当Flash启动时,它会请求并加载此文件(在Firebug中观察),但它也会从服务器的根目录(即来自http://server/crossdomain.xml)请求它(不存在)。后续HTTP请求无法报告安全跨域错误。当我将策略文件放到服务器的根目录时,一切正常。

为什么它从root用户请求策略文件,甚至认为它从子目录加载它?为什么子目录策略文件不够用?

我还应该注意,在发出任何应用程序HTTP请求之前会加载这两个策略文件。

2 个答案:

答案 0 :(得分:2)

我认为必须验证主策略文件是否允许备用策略文件设置权限。

Here's an interesting article with this little tidbit

  

如果指示客户端在主策略文件的位置以外的位置使用策略文件,则客户端必须首先检查主策略文件的元策略,以确定是否允许原始策略文件

答案 1 :(得分:1)

策略文件必须位于服务器上的根Web目录中。这是为了确保可能控制服务器上的子文件夹的人不能运行“官方”站点(例如,根)不支持的策略。