还有一个crosdomain.xml问题或:“如何正确解释文档”

时间:2010-04-09 15:00:19

标签: flex flash cross-domain crossdomain.xml

我已经阅读了很多关于flash播放器的新策略策略,并且还知道主策略文件。 现在想象以下情况: 有两个服务器(http)在自定义端口运行

  • servera.com:2222/websiteA
  • serverb.com:3333/websiteB

现在我打开一个想要访问serverb服务的服务器a(例如,servera.com:2222/websiteA/A.swf)的swf。 当然我需要在正确的位置使用crossdomain.xml,并且可能存在多种变体。 我不想使用主策略文件,因为我可能无法控制两个服务器的根目录。

我找到的一个解决方案适用于以下交叉域:

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*"/>
</cross-domain-policy>

serverb.com:3333/websiteB/crossdomain.xml

服务

现在我的问题: 是否有可能摆脱"*"并在allow-access-from规则中使用适当的(而不是通用的*)域名? 我所有的尝试都失败了,从我的理解应该是可能的。

2 个答案:

答案 0 :(得分: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="*.servera.com" to-ports="3333"/>
</cross-domain-policy>

(您可能还必须为from域指定端口 - 我不需要在一段时间内处理w /跨域w /端口。

答案 1 :(得分:0)

对跨域策略文件要非常小心。如果您使用的是cookie身份验证,或者如果serverb.com位于内部网络上,那么您不应使用跨域策略。或者,您可以在servera.com上使用代理服务器来代理对serverb.com的请求。这样可以避免跨域请求。

您还应该使用包含以下内容的mm.cfg文件设置日志记录:

ErrorReportingEnable=1
TraceOutputFileEnable=1
PolicyFileLog=1
PolicyFileLogAppend=1

这会将错误记录到文本文件中。查看更多details on setting up the mm.cfg file