[EDITED] 这个问题最初被描述为我在使用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
所有的想法都很受欢迎。
答案 0 :(得分:2)
因此,解决方案似乎是套接字服务器本身需要将交叉域xml传递给客户端。
Flash发送一个如下所示的字符串:
它连接后立即<policy-file-request/>
。
如果您使用
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
它接受连接。
最后剩下的非工作元素是,当客户端关闭时,它会拒绝重新连接,直到服务器脚本重新启动,即使服务器脚本似乎愿意重新使用套接字并且正在接收和在后续连接请求上发送相同的消息。此问题似乎也不会影响swf客户端的本地(非托管)版本。 很奇怪。