actionscript-3 - 安全沙箱违规,无法通过 Socket 连接到服务器

标签 actionscript-3 flash security sockets cross-domain

在我开始之前,我应该声明我已经阅读了所有内容,我正在关注 this , thisthis (还有更多……)但我仍然无法通过互联网上的 Socket 连接到我们正在运行的服务器。

这是我在 AS3 中的尝试:

        var host :String = "192.168.2.11";
        Security.allowDomain(host);
        Security.allowInsecureDomain(host);
        Security.loadPolicyFile("xmlsocket://" + host + ":" +  "843");

        // TTS server socket
        _socket = new Socket();
        _socket.addEventListener(Event.CLOSE, handleClose);
        _socket.addEventListener(IOErrorEvent.IO_ERROR, handleError);
        _socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecError);
        _socket.addEventListener(ProgressEvent.SOCKET_DATA, handleIncomingData);
        _socket.addEventListener(Event.CONNECT, handleConnect);
        _socket.connect(host, 1337);

如您所见,主机是本地地址,但只要我在此本地网络中,这应该无关紧要。我是,因为这确实可以从我的 IDE (FD4) 中运行。
此外,swf 与其尝试连接的应用程序位于同一服务器上,但位于另一个端口上。

服务器发送的策略文件(我们从端口 843 和 1337 都尝试过)如下:
<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy>

我们可以从服务器的日志输出中看到,这确实是发送到连接套接字。在 xml 数据之后当然会发送一个空字节。之后,服务器关闭连接。但是,Flash 似乎不喜欢它,因为大约 3 秒后仍然出现“错误 #2048”。

我们在这里真的没有想法......

最佳答案

我们设法通过包含另一个标签使其工作:

<site-control permitted-cross-domain-policies="master-only"/>

这个标签似乎是让它工作所必需的。无论我们尝试哪个端口,如果没有那个标签,我们都无法让它工作。

因此,在我们的案例中,完整的 xml 现在看起来像这样(当然很容易修改以适应任何情况):
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <site-control permitted-cross-domain-policies="master-only"/>
   <allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

这条线没有包含在Adobe's own example (!!)中真是太可惜了.我的意思是,它包含在示例文件中,但是 不在文章中 .我不想知道有多少人因为那个而被困在这个阶段......

关于actionscript-3 - 安全沙箱违规,无法通过 Socket 连接到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515821/

相关文章:

flash - 如何强制 Internet Explorer 加载 Adob​​e Flash 内容调试器?

python - 编写需要用户名和密码的 Python 功能测试

Android Keystore, key 的安全值

security - 白帽程序员的黑帽知识

apache-flex - 将变量绑定(bind)到 ItemRender 组件属性

actionscript-3 - AS3 使用蒙版从 Movieclip 获取位图

actionscript-3 - 项目中整个焦点元素的 Enter 按钮事件的操作脚本

flash - RTMFP 入门

actionscript-3 - SWFLoader 上的 Actionscript 3 和 Flex 4 缩放手势

actionscript-3 - 为什么删除事件监听器不起作用?