以下是让我感到困惑的要点:
- 我正在尝试使用 AS3 的 SecureSocket 类在我们的后端的端口 443 上建立一个 TLS 套接字。
- 后端有一个运行在端口 843 上侦听策略文件请求的服务。(如果您熟悉节点,这是为策略文件提供服务的服务器https://github.com/3rd-Eden/FlashPolicyFileServer)
提供的策略文件是
<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>
我写了一个小测试 Flash 片段(Test.swf),它试图建立所说的 TLS 套接字(在端口 443 上)。
- 通过 Vizzy Flash Tracer(在 Mac 上)启用和完成日志记录
- Vizzy 跟踪内联跟踪和闪存策略相关消息。
结果
运行 1
此运行仅通过内置策略文件请求端口 843 对策略文件进行 Flash 请求。以下是 Test.swf 运行的跟踪:
闪存日志:
* 违反安全沙箱 *
与 mic.test.com:443 的连接已停止 - 不允许出现错误:由于缺少策略文件权限http://localhost/~mic/flash/Test.swf
,请求者在 tlssocket://mic.test.com:443 处的资源请求被拒绝。http://localhost/~mic/flash/Test.swf
政策日志:
确定:已加载根级 SWF:
http://localhost/~mic/flash/Test.swf
确定:在策略文件中搜索以授权请求者从 tlssocket://mic.test.com:443 的资源加载数据,http://localhost/~mic/flash/Test.swf
错误:请求 tlssocket://mic.test 的资源。http://localhost/~mic/flash/Test.swf
由于缺少策略文件权限,请求者的 com:443被拒绝。
运行 2
对于此运行,除了提供上述文件之外,策略文件服务器已被修改以进行另一次迭代,以将以下 xml 节点添加到响应中:(根据 adobe 文档)
此运行通过它构建了 flash 请求主策略文件在策略文件请求端口 843 中,然后在不同的端口上加载 crossdomain.xml 策略文件(准确地说是从网络服务器)
crossdomain.xml 文件如下所示:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>
以下是 Test.swf 运行的跟踪:
闪存日志:
* 违反安全沙箱 *
与 mic.test.com:443 的连接已停止 - 不允许出现错误:由于缺少策略文件权限http://localhost/~mic/flash/Test.swf
,请求者在 tlssocket://mic.test.com:443 处的资源请求被拒绝。http://localhost/~mic/flash/Test.swf
政策日志:
确定:已加载根级 SWF:
http://localhost/~mic/flash/Test.swf
确定:在策略文件中搜索以授权请求者从 tlssocket://mic.test.com:443 的资源加载数据:http://localhost/~mic/flash/Test.swf
确定:已接受策略文件:https://mic.test。 com:10443/crossdomain.xml错误:由于缺少策略文件权限
,请求者在 tlssocket://mic.test.com:443 处的资源请求被拒绝。http://localhost/~mic/flash/Test.swf
唯一不同的是,flash 声称接受策略文件,但仍然拒绝播放。
你对我的想法哪里错了有什么建议吗?