【问题标题】:Sandbox violation on second socket send第二个套接字发送上的沙箱冲突
【发布时间】:2010-12-12 23:56:52
【问题描述】:

我有一个使用 Flash 二进制 (TCP) 套接字与 Java 服务器通信的 Flex 客户端。我有一个 localhost (Apache) 服务器,它提供了一个 crossdomain.xml 文件,在我测试时它是完全打开的。

我的代码在启动时成功加载了策略文件。

然后我毫不费力地将套接字连接到服务器并发送消息并获得响应。到目前为止一切都很好。

但是,当我通过同一个套接字发送第二条消息时,我会暂停大约 12 秒,然后出现沙盒违规错误:

Security Error: Error #2048: Security sandbox violation: file:///C:/apache_root/ttt1/ttt1.swf cannot load data from localhost:45455.

这与第一条消息成功通过的端口和套接字相同。

我尝试在每次发送之前重新加载策略文件,但得到相同的结果。

知道为什么会发生这种情况吗?我显然有一个打开的套接字。我在每次发送后刷新套接字,并且在每次读取后我也尝试这样做,但结果相同。

提前致谢

编辑:
如果我在每次调用之前重新创建套接字,我的代码就可以工作。我很难相信这是正确的,但也许我缺少一个 Socket 设置。

【问题讨论】:

    标签: apache-flex sockets flex3 sandbox


    【解决方案1】:

    据我所知,如果您使用的是二进制套接字,则不会通过 http 加载 crossdomain.xml。

    如果跨域被查询,你检查过你的 apache 的访问日志吗?

    您可能会通过 tcp 从 flash 从 flash 获取连接,请求您的 java 服务器上的文件(不使用 http。它只是发送字符串“”或类似的)。小心他们。如果您在 3 秒(左右)内没有回答,则 flash 会引发沙盒违规。

    【讨论】:

      【解决方案2】:

      当你想建立一个套接字连接时,你要做的第一件事就是加载策略文件。每次加载 SWF 时只需执行一次。

      Security.allowDomain(host);
      Security.loadPolicyFile("xmlsocket://"+host+":"+port);
      

      请求将在分配的端口(在您的情况下为 45455)上发出,您的服务器将不得不在该端口上侦听不带引号的请求 "<policy-file-request/>"。 找到该请求后,您需要将 crossdomain.xml 返回给客户端 与节点<allow-access-from domain="*" to-ports="*" />

      跨域发送后需要关闭服务器端的socket 在客户端,您需要忽略域响应,因为 Flex 会处理该响应,但是此时您可以重新连接到套接字服务器。 此时您可以进行数据发送/接收。

      我感觉它实际上对您有用的原因是因为您在超时之前使用策略文件的连接来传输您的数据。

      我建议阅读新风格的跨域策略,并阅读您用于套接字服务器的协议

      【讨论】:

        【解决方案3】:

        我认为这取决于您在 swf 的编译过程中使用的沙盒策略,而不是您的 crossdomain.xml...也许这个文档可以帮助您:Security sandboxes

        但我不是 100% 确定

        【讨论】:

        • 你知道如何在 Flex 3 中更改沙盒设置吗?
        • 这是使用网络编译器标志:livedocs.adobe.com/flex/3/html/…
        • 我没有明确的编译器设置,这意味着它将采用默认值“true”,这意味着我可以获取网络资源。我认为这是一个红鲱鱼。如果这是编译标志的问题,它根本不会工作,而不是只工作一次。
        【解决方案4】:

        这听起来像是缓存问题。也许您将第一个套接字连接从缓存中拉出,而第二个连接被拒绝,因为它从服务器获得了 200。

        您可能希望将 localhost 添加到您的闪存安全例外列表中以进行调试。这将消除沙盒错误,直到您将作品放到其生产环境中。

        【讨论】:

          猜你喜欢
          • 2017-06-12
          • 2017-09-25
          • 1970-01-01
          • 1970-01-01
          • 2018-11-08
          • 1970-01-01
          • 2018-06-11
          • 2012-08-29
          • 2017-11-29
          相关资源
          最近更新 更多