跨域,顾名思义就是需要的资源不在自己的域服务器上,需要访问其他域服务器。跨域策略文件是一个xml文档文件,主要是为web客户端(如Adobe Flash Player等)设置跨域处理数据的权限。打个比方说,公司A部门有一台公共的电脑,里面存放着一些资料文件,专门供A部门内成员自己使用,这样,A部门内的员工就可以访问该电脑,其他部门人员则不允许访问。如下图:
A部门的员工可以任意访问A部门的公共电脑,但是不能直接访问B部门的公共电脑。有一天,B部门领导觉得他们的资料非常有用,想要与A部门分享,于是就给A部门一个令牌,这样A部门的员工也可以访问B部门的公共电脑了。
换成系统,常见就如同下面所示:
上图是典型的跨域请求,业务服务器向图片服务器上传图片时就涉及到了跨域,要想能正常访问,图片服务器需要给业务服务器设置允许访问的权限。而这个权限设置就是跨域策略文件crossdomain.xml存在的意义。
site-control
site-control元素用于定义当前域的元策略。元策略则是用于指定可接受的域策略文件,且该文件不同于目标域根元素(名为crossdomain.xml)中的主策略文件。
如果客户端收到指示使用主策略文件以外的策略文件,则该客户端必须首先检查主策略的元策略,以确定请求的策略文件是否获得许可。
属性:
allow-access-from
allow-access-from元素用于授权发出请求的域从目标域中读取数据。可以通过使用通配符(*),为多个域设置访问权限。
属性:
举例:
域值 | 匹配 | 不匹配 |
---|---|---|
www.example.com | http://www.example.com |
http://example.com http://example.com http://www.example.net |
*.example.com |
http://example.com http://www.example.com http://deep.subdomain.example.com |
http://www.example.net |
http://*.example.com |
http://example.com http://www.example.com http://deep.subdomain.example.com |
所有的https域 |
127.0.0.1 | http://127.0.0.1 |
http://localhost http://127.0.0 http://127.0.0.2 |
www.example.* | 无效的值,不匹配 | 无 |
<?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"/> <!-- 允许example.com及其子域访问 --> <allow-access-from domain="*.example.com"/> <!-- 允许http://www.example.com访问 --> <allow-access-from domain="www.example.com"/> <allow-http-request-headers-from domain="*.csdn.net" headers="*"/> </cross-domain-policy>
From:http://blog.csdn.net/gnail_oug/article/details/53488918