设置 crossdomain.xml 文件实施 HTTP 流式传输
本文概括介绍了跨域策略文件,以及如何在 Adobe Media Server 中为 HTTP 流式传输配置该文件。 为什么需要采用 crossdomain.xml 文件?跨域策略文件跨域策略文件是一种 XML 文档,旨在为 Web 客户端,比如 Adobe Flash Player 或 Adobe Acrobat(但不限于这两类客户端)授予跨域处理数据的权限。当客户端请求获取特定源域上托管的内容、且该内容将请求定向至除自身域以外的其他域时,远程域需要托管跨域策略文件,从而授予源域的访问权限,使客户端继续执行事务。 为了使另一台 Web 服务器上托管的 Flash Media Player 能够访问该 Adobe Media Server Web 服务器中的内容,我们需要使用 crossdomain.xml 文件。典型用例是将 HTTP 流(视频点播或直播)传输到 Flash Player。crossdomain.xml 文件可为 Web 客户端授予跨越多个域处理数据所需的权限。 元素规范crossdomain.xml 文件可以包含以下元素: cross-domain-policycross-domain-policy元素是跨域策略文件的根元素。它是一种策略文件定义容器,没有自己的属性。
属性(无) site-controlsite-control元素用于定义当前域的元策略。元策略则用于指定可接受的域策略文件,且该文件不同于目标域根元素(名为 crossdomain.xml)中的主策略文件。 如果客户端收到指示使用主策略文件以外的策略文件,则该客户端必须首先检查主策略的元策略,以确定请求的策略文件是否获得许可。
属性
allow-access-fromallow-access-fromallow-access-from 元素用于授权发出请求的域从目标域中读取数据。尽管通过使用通配符 (*),一个 allow-access-from 元素可以为多个域授予访问权限,每个获得许可的请求都需要使用一个新的allow-access-from元素。
allow-access-from-identityallow-access-from-identity元素根据加密凭据授予权限,而allow-access-from则截然不同,它根据来源授予权限。迄今为止,定义的唯一机制是允许访问由给定方(该方由证书指定)进行数字签名的所有文档。
Signatory Onesignatory使用一个 signatory 元素包含 certificate 元素。
certificate 使用一个 signatory 元素包含 certificate 元素。
属性 certificate元素必须包含两个属性:
注意:Flash Player 不支持 allow-access-from-identity 元素。 allow-http-request-headers-fromallow-http-request-headers-from元素用于授权发出请求的域中的请求文档将用户定义的标头发送到目标域。而 allow-access-from 元素旨在授权从目标域提取数据。这个标签授权以标头的形式推送数据。
匹配规则我们使用以下规则确定 allow-access-from 或 allow-http-request-headers-from 元素的域属性值是否与实际域名相符:
主策略文件策略文件用于授予数据读取权限,允许客户端在跨域请求中包含自定义标头,并授予基于套接字的连接权限。策略文件在服务器上的最常见位置是文件名为 crossdomain.xml (例如 http://example.com/crossdomain.xml) 的目标域根目录中——当客户端需要策略文件时的默认检查位置。以这种方式托管的策略文件称作主策略文件。 crossdomain.xml 文件示例示例 1:allow-access-from:允许访问根域<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy> <site-control permitted-cross-domain-policies="master-only"/> <allow-access-from domain="*.example.com"/> <allow-access-from domain="www.example.com"/> <allow-http-request-headers-from domain="*.adobe.com" headers="SOAPAction"/></cross-domain-policy>
此处的site-control元素用于指定该域仅将此主策略文件视为有效文件。allow-access-from元素用于指定 example.com 请求域中的内容可以访问目标域(保存此策略文件的域)中的所有数据。最后,allow-http-request-headers-from元素表示,通过从 adobe.com 向目标域发送请求还允许发送SOAPAction 标头。 示例 2:cross-domain-policy:最不宽松的策略这是最不宽松的主策略文件定义。它可以限制任何策略文件(包括这个文件在内)向发出请求的任何域授予任何类型的权限。 示例 3:cross-domain-policy:受最少限制的策略这是最宽松的主策略文件定义(不推荐使用)。它允许目标域上的任意策略文件授予权限,允许访问它的任何文件,并且允许向服务器发送任何标头,尽管源是 HTTP,即使通过 HTTPS 也可以执行所有操作。 在 Adobe Media Server 中设置 crossdomain.xml 文件实施 HTTP 流式传输为了使另一台 Web 服务器上托管的 Flash Media Player 能够访问该 Adobe Media Server Web 服务器中的内容,我们需要使用 crossdomain.xml 文件。典型用例是将 HTTP 流(视频点播或直播)传输到 Flash Player。crossdomain.xml 文件可为 Web 客户端授予跨越多个域处理数据所需的权限。 配置 crossdomain.xml
一个简单的 crossdomain.xml 如下所示: (不推荐使用此设置,因为它允许所有域连接并允许所有策略) 将该文件命名为 crossdomain.xml 并保存。
您可以打开 root_install/Apache2.2/conf 文件夹下的 httpd.conf 文件验证 Apache Webroot。在 httpd.conf 中,搜索 “DocumentRoot”。此标签的值用于指定 Apache Document 根目录。 Document 根目录是客户端查找 crossdomain.xml 的默认位置。
疑难问题解答客户端错误 #2032客户端上出现错误 #2032 通常表示找不到 crossdomain.xml。您可以通过检查 root_install/Apache2.2/logs 下显示的 Apache 错误日志验证这项错误。您将会发现以下错误:“File does not exist(文件不存在)” 解决方案:将 crossdomain.xml 置于 Apache Document 根目录下。 (参见“配置 crossdomain.xml”部分) Crossdomain.xml 存在,但系统针对 crossdomain 请求抛出错误 404检查确认 crossdomain.xml 文件是否位于正确路径下。您可以通过检查 root_install/Apache2.2/logs 下显示的 Apache 错误日志验证这项错误。您将会在 Apache 查找 crossdomain.xml 文件的路径下发现错误:“File does not exist(文件不存在)”。 下一步阅读方向crossdomain.xml 文件可授予 Web 客户端跨越多个域处理数据的权限。当通过 HTTP 流式传输内容时,我们需要使用 crossdomain.xml 文件,从而让另一台 Web 服务器上托管的 Flash Media Player 能够访问该 Adobe Media Server Web 服务器中的内容。 请在此处了解有关跨域文件规范的更多信息。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |