Flash文件跨域访问

时间:2022-08-29 08:37:07

因企业门户公司公文、通知公告、新闻模块需要控制附件下载权限,考虑前端使用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文件存放位置,建议将其存放于站点根目录中!