【问题标题】:Flash not connecting via open-socket, security issueFlash 未通过 open-socket 连接,安全问题
【发布时间】: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。

标签: flash sockets


【解决方案1】:

因此,解决方案似乎是套接字服务器本身需要将跨域 xml 传递给客户端。

Flash 发送如下所示的字符串: &lt;policy-file-request/&gt; 连接后。 如果你用

回应这个
<?xml version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

它接受连接。

最后一个不工作的元素是当客户端关闭时,它拒绝再次重新连接,直到重新启动服务器脚本,即使服务器脚本似乎愿意重新使用套接字并且正在接收和在后续的连接请求中发送相同的消息。此问题似乎也不会影响 swf 客户端的本地(非托管)版本。 很奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2012-03-19
    • 1970-01-01
    相关资源
    最近更新 更多