以下是令我感到困惑的要点:
提供的政策文件是
<?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上)。
结果
此运行只有闪存通过它内置的策略文件请求端口843询问策略文件。 以下是Test.swf运行的跟踪:
FLASH LOG:
*安全沙箱违规*
与mic.test.com:443的连接已停止 -http://localhost/~mic/flash/Test.swf
不允许 错误:由于缺少策略文件权限,来自http://localhost/~mic/flash/Test.swf
的请求者对tlssocket://mic.test.com:443处的资源请求被拒绝。
政策日志:
确定:加载了根级SWF:
http://localhost/~mic/flash/Test.swf
确定:在策略文件中搜索以授权从资源加载数据 at tlssocket://mic.test.com:443来自http://localhost/~mic/flash/Test.swf
的请求者 错误:由于缺少策略文件权限,来自http://localhost/~mic/flash/Test.swf
的请求者对tlssocket://mic.test.com:443处的资源请求被拒绝。
对于此次运行,除了如上所述提供文件外,还修改了策略文件服务器以进行另一次迭代,以将以下xml节点添加到响应中:
(根据adobe docs)
此运行有闪存通过它内置的策略文件请求端口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运行的跟踪:
FLASH LOG:
*安全沙箱违规*
与mic.test.com:443的连接已停止 -http://localhost/~mic/flash/Test.swf
不允许 错误:由于缺少策略文件权限,来自http://localhost/~mic/flash/Test.swf
的请求者对tlssocket://mic.test.com:443处的资源请求被拒绝。
政策日志:
确定:加载了根级SWF:
http://localhost/~mic/flash/Test.swf
OK:在策略文件中搜索以授权来自http://localhost/~mic/flash/Test.swf
的请求者在tlssocket://mic.test.com:443处从资源加载数据 确定:已接受政策文件:https://mic.test.com:10443/crossdomain.xml
错误:由于缺少策略文件权限,来自http://localhost/~mic/flash/Test.swf
的请求者对tlssocket://mic.test.com:443处的资源请求被拒绝。
唯一的区别是flash声称接受策略文件,但仍然拒绝播放。
你对我的想法错在哪里有什么指示吗?
答案 0 :(得分:1)
按照@wvxvw的建议 答案结果是策略文件服务器需要能够通过TLS连接回答请求。