2009-11-03 92 views
0

我有一个在http://server/abc/service中运行的Web服务,该服务由来自不同域的Flash访问。我部署一个跨域策略文件http://server/abc/crossdomain.xml,并使其使用Flash加载:在主影片剪辑的构造在非根目录中Flash crossdomain.xml

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

。但是,当Flash启动时,它会请求并加载此文件(在Firebug中观察到),但它也会从不存在的服务器根目录(即从http://server/crossdomain.xml)请求该文件。后续的HTTP请求不起作用报告安全跨域错误。当我将策略文件放到服务器的根目录时,它一切正常。

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

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

回答

2

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

Here's an interesting article with this little tidbit

如果客户指示使用策略文件中比主策略文件的其他位置,客户端必须首先检查主策略文件的元策略,以确定如果允许原始策略文件

+0

+1谢谢你的链接。我必须承认我没有阅读跨域策略文件规范。我只读了我认为没有提到的Flash帮助。 –

1

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