Uploadify跨域访问解决方案

时间:2022-08-29 12:19:02
  最近项目中要用文件上传控件,我就想到了Uploadify,但是Uploadify内部是通过flash来实现文件上传的,所以当跨域上传文件时就会报security error,就这需要配置跨域策略文件crossdomain.xml文件。基于flash安全沙箱策略来讲,同一个域属于同一个沙箱,只有在同一个沙箱中才能互相访问,如果要访问另一个沙箱,就需要对发起请求的沙箱定义为信任,而这种信任策略就需要配置在crossdomain.xml文件中。

 

crossdomain.xml文件中的内容如下所示:

 

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE cross-domain-policy SYSTEM    
  3.     "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" >    
  4. <cross-domain-policy>    
  5.     <site-control permitted-cross-domain-policies="all" />    
  6.     <allow-access-from domain="*" />    
  7.     <allow-http-request-headers-from domain="*" headers="*"/>  
  8. </cross-domain-policy>  
 

以上代码表示接受来自任何域的数据请求访问,通过以上的配置就可以实现跨域的文件上传了,但是这种策略也是不安全的,因为这样有可能接收来自非法域的数据请求访问,所以我们还需要自定义请求访问域,代码如下所示:

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE cross-domain-policy SYSTEM    
  3.     "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" >    
  4. <cross-domain-policy>    
  5.     <allow-access-from domain="*.baidu.com" />    
  6. </cross-domain-policy>  
 

 

通过以上配置就可实现较安全的Uploadify跨域访问,本人测试时用的是tomcat,crossdomain.xml文件放在项目的webroot目录下。