【发布时间】:2010-01-02 06:30:55
【问题描述】:
[已编辑] 这个问题最初被描述为我在使用 Perl 的 Socket 时遇到了问题,但我现在已经转移到这显然是一个 Flash 安全问题。但是,我仍然卡住了。
我有一个 Flash 客户端,它尝试连接到与其所在主机相同的主机上的打开套接字。
我能够从 Flash IDE 内部成功连接,当我在我的机器上本地运行 swf 电影时,在白名单中授予它安全许可后,它也会连接。但是,当我通过浏览器 (http://mydomain/mymovie.swf) 调用电影时,它无法连接。
套接字报告已尝试连接,但立即断开连接。
我有一个看起来像这样的跨域策略文件:在主机的根目录中。
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="10005"/>
</cross-domain-policy>
(是的,Socket 正在侦听该端口)。
在 Flash 电影中,我有这样一行:
System.security.loadPolicyFile("XMLSocket://myDomain.com:80");
我在想也许这就是问题所在,但是关于如何使用这种方法的文档并不完全清楚。
我在 Flash CS3 中
感谢所有想法。
【问题讨论】:
-
你能给我们一些真实的代码吗?
-
乱想: 1. 你试过用localhost/127.0.0.1 来访问策略文件吗? 2. 您是否一直使用同一个域(www.domain.com 和 domain.com 之间没有切换)?
-
1) 作为最后的手段,我尝试了 localhost,但它不起作用(而且真的不应该)工作,因为当通过浏览器访问时,flash 正在客户端上运行并且需要知道要在哪个外部域上查找策略文件……至少我认为它是这样工作的(同样,我可能完全错了)。 2) 是的...我在任何情况下都没有使用 www。