最近项目项目优化,使用的是jQuery插件uploadly实现图片上传,由于Uploadify内部是通过flash来实现文件上传的,所以当跨域上传文件时就会报security error,就这需要配置跨域策略文件crossdomain.xml文件。基于flash安全沙箱策略来讲,同一个域属于同一个沙箱,只有在同一个沙箱中才能互相访问,如果要访问另一个沙箱,就需要对发起请求的沙箱定义为信任,而这种信任策略就需要配置在crossdomain.xml文件中。
所以优先查看了webroot目录下crossdomain.xml文件:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*.xxx.com" />
</cross-domain-policy>
发现没有问题。
后来经过多方调试,和系统查找,解决成功。
原因是由于,图片上传服务属于单独的系统,本人修改了图片上传的代码,导致tomcat部署图片服务应用时失败。tomcat的监听服务并没有启动,从而导致uploadly上传图片时远程URL访问失败,浏览器报错:
security Error:error #2049。
因而如果报这种错误,如果是远程分应用调用crossdomain.xml没问题要检查上传服务是否正常。
以下如果crossdomain.xml有问题的配置:
<?xml version="1.0" encoding="UTF-8"?><br /> <!DOCTYPE cross-domain-policy SYSTEM<br /> "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" ><br /> <cross-domain-policy><br /> <site-control permitted-cross-domain-policies="all" /><br /> <allow-access-from domain="*" /><br /> <allow-http-request-headers-from domain="*" headers="*"/><br /> </cross-domain-policy><br />
此配置表示接收所有请求。存在安全问题一般项目不会使用。
<?xml version="1.0" encoding="UTF-8"?><br /> <!DOCTYPE cross-domain-policy SYSTEM<br /> "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" ><br /> <cross-domain-policy><br /> <allow-access-from domain="*.baidu.com" /><br /> </cross-domain-policy><br />
通过以上配置就可实现较安全的Uploadify跨域访问。 |