我正在尝试将Flash套接字客户端连接到c ++套接字服务器(使用boost :: asio)。我总是在远程服务器上运行服务器应用程序,侦听端口7171。
如果我在本地计算机上运行闪存套接字客户端(直接在CS5.5内部),则连接正常。 在成功测试之后,我决定将我的swf上传到与套接字服务器相同的机器,允许多个用户通过HTTP连接它(然后我认为flash客户端和c ++服务器在同一个域内),但在这种情况下,我总是得到一个SecurityError 2048。
我能错过什么?
答案 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忽略了策略要求,因为它知道它在开发环境中。