0

我有一个在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 请求无法报告安全跨域错误。当我将策略文件放到服务器的根目录时,一切正常。

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

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

4

2 回答 2

2

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

这是一篇有趣的文章,里面有这个小花絮

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

于 2009-11-03T18:03:24.673 回答
1

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

于 2009-11-03T18:13:04.523 回答