最近项目中要用文件上传控件,我就想到了Uploadify,但是Uploadify内部是通过flash来实现文件上传的,所以当跨域上传文件时就会报security error,就这需要配置跨域策略文件crossdomain.xml文件。基于flash安全沙箱策略来讲,同一个域属于同一个沙箱,只有在同一个沙箱中才能互相访问,如果要访问另一个沙箱,就需要对发起请求的沙箱定义为信任,而这种信任策略就需要配置在crossdomain.xml文件中。
crossdomain.xml文件中的内容如下所示:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE cross-domain-policy SYSTEM
- "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" >
- <cross-domain-policy>
- <site-control permitted-cross-domain-policies="all" />
- <allow-access-from domain="*" />
- <allow-http-request-headers-from domain="*" headers="*"/>
- </cross-domain-policy>
以上代码表示接受来自任何域的数据请求访问,通过以上的配置就可以实现跨域的文件上传了,但是这种策略也是不安全的,因为这样有可能接收来自非法域的数据请求访问,所以我们还需要自定义请求访问域,代码如下所示:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE cross-domain-policy SYSTEM
- "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" >
- <cross-domain-policy>
- <allow-access-from domain="*.baidu.com" />
- </cross-domain-policy>
通过以上配置就可实现较安全的Uploadify跨域访问,本人测试时用的是tomcat,crossdomain.xml文件放在项目的webroot目录下。