跨域策略文件--crossdomain.xml

1、为什么需要采用 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 客户端授予跨越多个域处理数据所需的权限。

2、跨域文件内容

1)应用格式举例:

const string CROSS_DOMAIN_XML = "<?xml version=\"1.0\"?>\r\n"

"<cross-domain-policy>\r\n"
"<site-control permitted-cross-domain-policies=\"all\"/>\r\n"
"<allow-access-from domain=\"*.xxx.com\" secure=\"true\"/>\r\n"
"<allow-http-request-headers-from domain=\"*.xxx.com\" headers=\"*\" secure=\"true\"/>\r\n"
"</cross-domain-policy>\r\n";


2)举例:针对Socket的策略文件

<cross-domain-policy>

<allow-access-from domain="*" to-ports="507" />

<allow-access-from domain="*.example.com" to-ports="507,516" />

<allow-access-from domain="*.example2.com" to-ports="516-523" />

<allow-access-from domain="www.example2.com" to-ports="507,516-523" />

<allow-access-from domain="www.example3.com" to-ports="*" />

</cross-domain-policy>

这个策略文件是指定允许哪些域的主机通过那些端口链接


3、客户端请求跨域文件的方式(3种)

当封装在页面的flash发起socket通信请求的时候会先寻找服务器端的843端口,获取Crossdomain.xml文件,当服务器没有开启843的时候,flashPlayer会检查发起请求的swf文件中有没有使用Security.loadPolicyFile来加载策略文件Crossdomain.xml,如果还是没有就会看这个发起请求的swf要连接的目标端口有没有策略文件。如果都没有那么连接失败,返回出错提示Flash端显示错误为:securityErrorHandler信息: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]。


4、服务端提供跨域文件的方式(3种)

在服务器端,可以使用843端口提供crossdomain.xml文件;也可以使用其他端口提供该文件,但此时客户端需要使用Security.loadPolicyFile(“xmlsocket://www.xxx.com:其他端口”)请求。

另外一种对后台服务(直接提供socket侦听的服务)比较常用的一种实现是,在业务服务端口提供crossdomain.xml文件,即当业务服务端口接收到请求字符串“<policy-file-request/>”时,回复上面的CROSS_DOMAIN_XML 即可。


转自:http://www.69900.com.cn/Allan_Zeng/article/details/39348405

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念