1,场景描述
项目部署在两个不同的域上,分为app项目 和 repository项目 简称 A 和 R 。
在A上使用jquery uploadify 做上传,远程连接到 R上,因为表单是属于 A 域的 ,flash swf 这样的上传存在沙箱安全问题,不允许直接上传到 R上进行操作。
2,解决办法
项目是部署在 tomcat下的,找到tomcat的部署文件,webapps/ROOT 在这里加入 一个 crossdoamin.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>
3,详解
crossdomain.xml 是 Adobe提出的flash swf 跨域解决方案。
<allow-access-from doamin="*"/> 表示允许任意域的请求在本域提取数据,其中 * 可为域名可为 ip,当为ip时不允许使用通配符,为域名时 最后必须以 .xx结尾 如 aa.com 自动匹配 *.aa.com
另外如果crossdoamin.xml位于 https服务器时,建议将请求域配置成Https 。 强烈不建议开启 <allow-access-from domain="*" secure="false"/> secure 默认为true。
<allow-http-request-headers-from domain="*" headers="*"/> 允许向本域中发生request 头信息。