0

我正在尝试将 Flash 套接字客户端连接到 C++ 套接字服务器(使用 boost::asio )。我总是在侦听端口 7171 的远程服务器上运行服务器应用程序。

如果我在本地机器(直接在 CS5.5 内部)上运行 flash 套接字客户端,则连接工作正常。在这个成功的测试之后,我决定将我的 swf 上传到与套接字服务器相同的机器上,以允许多个用户通过 HTTP 连接它(然后我假设 flash 客户端和 c++ 服务器在同一个域内),但在这种情况下,我总是得到一个 SecurityError 2048。

我会错过什么?

4

2 回答 2

2

当您在本地测试时,您在沙箱中,这将忽略安全问题,这就是为什么上传时(在沙箱之外)它不起作用的原因。

在您的 ActionScript 中,您需要包含此内容。

// host is something like dev.mydomain.com
Security.allowDomain( host );
Security.loadPolicyFile( "xmlsocket://" host + ":" port );

在您需要监听此请求的端口上

<policy-file-request/>

当您收到策略请求时,您需要使用此节点返回跨域策略。

<allow-access-from domain="*" to-ports="*"  />
于 2012-04-17T16:03:23.130 回答
0

Flash 需要在主机上运行策略服务器才能访问任何套接字:

http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

这是与跨域文件不同的要求——它需要在端口 843 上运行的实际策略服务器应用程序。

可能是 CS5 中的 Flash 忽略了策略要求,因为它知道它处于开发环境中。

于 2012-04-17T15:42:04.927 回答