3

我已经将我的 flex 应用程序的协议从 https 更改为 http,并且 flashplayer 仍然希望使用 https 下载 crossdomain.xml,尽管端口为 http。该应用程序在http://domain01:8080/flex访问,它想要获取 https:..samedomain..:8080/crossdomain.xml (在 https:..samedomain..no_port/flex 它工作正常)。

有人知道为什么吗?

非常感谢,

丹尼尔

4

3 回答 3

0

当您更改端口并使用 Https 时,Flex(至少 3.5 AFAIK..)会遇到一些识别危机......安全模型取决于端口..我不知道问题的确切原因,但我的解决方案是加载跨域在您的应用程序中明确文件..

System.security.loadPolicyFile('https://mydomain:port/crossdomain.xml');

于 2011-01-16T08:21:49.700 回答
0

当您遇到跨域问题时,值得记住的是,通过使用 Security 类,您始终可以显式控制加载的 crossdomain.xml 文件(实际上,策略文件可以具有您想要的任何名称)。在处理更复杂的实际情况(例如,使用负载平衡或反向代理)时,从服务器根目录加载策略文件的默认行为通常过于严格。

尝试使用:

Security.loadPolicyFile(<URI to the policy file goes here>);

ASDocs 在这里并很好地解释了它。

通过控制策略的加载方式,您可以获得更多的自由,并从原本可能是痛苦、令人沮丧的体验中消除大量猜测。Flash Player 允许您加载多个策略文件,如果您需要与多个服务层集成(例如,通过 HTTPS 在一个主机上,通过 HTTP 在另一个主机上),这将非常方便。

祝你好运,

泰勒

于 2011-04-05T15:34:44.863 回答
0

没有直接的答案,因为我没有尝试过指定非默认端口的这种情况,但是有一些信息可能会引导您找到答案:

http://learn.adobe.com/wiki/download/attachments/64389123/CrossDomain_PolicyFile_Specification.pdf?version=1

这可能很有趣:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*.example.com" to-ports="507,516-523"/>
</cross-domain-policy>

或这个:

10,0,12,0 站点控制的非套接字策略文件的允许跨域策略默认值为“仅主”

也许尝试使用旧版本的 Flash Player 以查看从 9->10 的更改中的某些内容是否导致问题,然后在更改日志中查找更改可能更容易,或者可能是新版本中的错误。

祝肖恩好运

于 2011-01-04T19:36:17.547 回答