【发布时间】:2016-03-29 19:16:21
【问题描述】:
crossdomain.xml,一个非常简单的概念,大多数开发人员可能已经经历过,尽管仅供参考:-
跨域策略文件是一种 XML 文档,它授予 Web 客户端(例如 Adobe Flash Player 或 Adobe Acrobat(尽管不一定限于这些))处理跨域数据的权限。当客户端请求托管在特定源域上的内容并且该内容发出指向其自身域以外的域的请求时,远程域需要托管一个跨域策略文件,该文件授予对源域的访问权限,从而允许客户端继续交易。
问题:
我的网站 www.A.com 上有一个 flash hls 播放器 (player.swf)。现在正在向媒体服务器 www.B.com/playlist.m3u8 发出请求,这是一个安全的 hls 请求(AES-128 加密)。 playlist.m3u8 中包含的密钥 url 指向 Web 服务器 www.C.com/keyPage.jsp
现在我的 player.swf 理想情况下应该在调用它们时为两个服务器调用 crossdomain.xml 并继续进行后续调用,但在我的情况下,一旦播放器从 www.C.com 收到第二个 crossdomain.xml,它就会停止任何其他呼叫。但是,如果我将密钥传递应用程序从 www.C.com 移动到 www.A.com,它可以正常工作。
我真的对这样的行为感到困惑,例如目标服务器使用 crossdomain.xml 来验证驻留在其他服务器上的客户端。那么,如果我使用多个服务器并提供跨域 xml,这有什么关系对于所有这些都适用于单个 Flash 应用程序。
附: - 我用不同的在线 hls 播放器尝试了相同的过程,每个人都描绘了相同的行为
编辑 1 仅供参考,我的跨域 xml 是
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="false"/>
<site-control permitted-cross-domain-policies="all"/>
</cross-domain-policy>
【问题讨论】:
-
你能放一个在线例子来看看这种行为吗?
-
也不要混合使用 SSL 和非 SSL 服务器。它们必须全部从
http...加载或全部从https...加载。其次,为什么您的密钥不能在 A.com 上?或者在 A.com 的页面只需加载 player.swf 和密钥(两者都存储在 C.com)。 -
@akmozo - 我认为这不可能。
-
@VC。一 - 是的,我正在处理所有内容都应该从 http 或 https 加载,而不是混合加载。出于安全原因,我在 A 或 C.com 上拥有我的密钥是不可行的。所以我能否调用两个跨域 xml 对我来说仍然是个谜。
-
你能从C服务器发布跨域吗?玩家很可能被阻止一次,并且没有进行任何后续调用。还要确保 C 服务器不会阻塞端口或连接(防火墙?)
标签: flash crossdomain.xml