因企业门户公司公文、通知公告、新闻模块需要控制附件下载权限,考虑前端使用Flash进行展示,如果没有下载权限,则使用swf文件通过flexpaper_flash插件在线预览;有下载权限则直接浏览原文件。可是遇到流程上传附件是保存在BPM站点下的文件夹中,在门户站点中通过flexpaper_flash插件在线预览,看不到flash内容。后来经查证相关资料,是因为flash文件不支持跨域浏览。不过可以通过以下方式进行配置跨域。
门户站点访问BPM站点的flash文件首先会检查BPM站点服务器目录下是否有 crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.mzwu.com域 访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。(提示:如果BPM站点是WINDOWS认证,其没有实现站点间的SSO,需要配置crossdomain.xml匿名访问)
- 匿名访问设置:
在IIS设置允许crossdomain.xml录匿名访问。
在web.config里增加如下配置才会生效(经过EP测试,暂时不需要增加)
<location path="crossdomain.xml">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
- crossdomain.xml文件格式
crossdomain.xml的格式非常简单,其根节点为<cross-domain-policy> ,其下包含一个或多个<allow-access-from>节点,<allow-access-from>有一个属性 domain,其值为允许访问的域,可以是确切的 IP 地址、一个确切的域或一个通配符域(任何域)。下边是两个例子:
程序代码
<?xml version=”1.0″?>
<cross-domain-policy>
<allow-access-from domain=”www.friendOfFoo.com” />
<allow-access-from domain=”*.foo.com” />
<allow-access-from domain=”105.216.0.40″ />
</cross-domain-policy>
程序代码
<?xml version=”1.0″?>
<cross-domain-policy>
<allow-access-from domain=”*” />
</cross-domain-policy>
第二个例子允许任何域的访问。对于crossdomain.xml文件存放位置,建议将其存放于站点根目录中!