1、为什么需要采用 crossdomain.xml 文件?
跨域策略文件跨域策略文件是一种 XML 文档,旨在为 Web 客户端,比如 Adobe Flash Player 或 Adobe Acrobat(但不限于这两类客户端)授予跨域处理数据的权限。当客户端请求获取特定源域上托管的内容、且该内容将请求定向至除自身域以外的其他域时,远程域需要托管跨域策略文件,从而授予源域的访问权限,使客户端继续执行事务。
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
原文链接:https://www.f2er.com/xml/295396.html