Flash套接字,securityerror在同一个域中?

时间:2012-04-17 15:33:25

标签: actionscript-3 sockets flash-cs5

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

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

我能错过什么?

2 个答案:

答案 0 :(得分: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="*"  />

答案 1 :(得分:0)

Flash要求在托管计算机上运行策略服务器以访问任何套接字:

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

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

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